Извлечение числа в скобках в R с помощью регулярных выражений - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь извлечь 22 снизу:

"Feb22 19  (22) 100  (Weeklys) "

Я пробовал ниже, но безуспешно.Есть предложения?

grep("\\(.*\\)", "Feb22 19  (22) 100  (Weeklys) ", value= TRUE

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Мы также можем использовать:

    string<-"Feb22 19 (22) 100 (Weeklys) "
    unlist(stringr::str_extract_all(string,"\\d{1,}(?=\\))"))
    #[1] "22"

Мне недавно советовали использовать simplify, хотя я считаю вывод unlist лучше.

Использование stringr::str_extract_all(string,"\\d{1,}(?=\\))",simplify=TRUE)

    [,1]
[1,] "22"
0 голосов
/ 26 февраля 2019

Мы можем попробовать использовать sub с группой захвата:

x <- "Feb22 19  (22) 100  (Weeklys) "
sub(".*\\((\\d+)\\).*", "\\1", x)

[1] "22"

Вышеприведенный шаблон можно объяснить так:

.*     consume anything, up until the last
\(     literal open parenthesis, which is then followed by
(\d+)  one or more digits (which are captured)
\)     followed by a closing parenthesis
.*     followed by anything

Замена - \\1, чточисло, зафиксированное в шаблоне.Обратите внимание, что если входные данные не содержат число в скобках, приведенный выше вызов sub фактически вернет исходную входную строку.Если вам не нравится это поведение, вам придется больше работать.

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