R Регулярное выражение - PullRequest
0 голосов
/ 24 января 2019

Я изучаю функцию sub & gsub, и после прочтения определения я все еще не понимаю, что это такое:

". *", "\ S"

в частности, вопрос, который задает, что возвращает следующий фрагмент кода, и я понятия не имею, как это работает

awards <- c("Won 1 Oscar.", "Won 1 Oscar. Another 9 wins & 24 nominations.", "1 win and 2 nominations.", "2 wins & 3 nominations.", "Nominated for 2 Golden Globes. 1 more win & 2 nominations.", "4 wins & 1 nomination.")

sub(".*\\s([0-9]+)\\snomination.*$", "\\1", awards)

1 Ответ

0 голосов
/ 24 января 2019

". *" =. означает любой символ и * равно 0 или более из предыдущего.
«\ s» = означает любой пробел

So

sub(".*           #match any character 0 or more times
\\s               # follow by a space (whitespace)
([0-9]+)          # with at least 1 number the () means extract
\\s               # follow by another space
nomination        # follow by the word "nomination"
.*$",             # with 0 or more characters from end of the line
 "\\1", awards)   # //1 means replace with the first match

Учитывая ваш образец строк, в первой строке нет слова номинирования, поэтому возвращается исходная строка. Все остальные строки будут совпадать, поэтому номер, непосредственно предшествующий слову «номинация», будет перенастроен.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...