Все первые числа после некоторого строкового шаблона, используя регулярное выражение в R - PullRequest
0 голосов
/ 09 ноября 2018

Я хочу извлечь все числа после строки "mystr" и что-то еще. Например, если у меня есть строка.

x <- "This is mystring hola 8 and this yourstring hola 9 and again mystrings op 12."

Должно вернуться 8 и 12. В R я попробовал:

stringr::str_extract_all(x, "mystr.*\\d+")

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Иногда str_match более гибок, чем str_extract:

library(stringr)
str_match_all("This is mystring hola 8 and this yourstring hola 9 and again mystrings op 12.", 
              "mystring.*?(\\d+)")[[1]][, 2]

[1] "8"  "12"
0 голосов
/ 09 ноября 2018

Вы можете извлечь фрагменты ближайших цифр после mystr, используя

x <- "This is mystring hola 8 and this yourstring hola 9 and again mystrings op 12."
regmatches(x, gregexpr("mystr.*?\\K\\d+", x, perl=TRUE))
# => [[1]]
#    [1] "8"  "12"

См. Демоверсию R

Это регулярное выражение PCRE будет соответствовать

  • mystr - mystr
  • .*? - любые 0+ символов, кроме символов разрыва строки, должны быть как можно меньше
  • \\K - пропустит соответствующий текст
  • \\d+ - 1+ цифр.

См. Демонстрационный пример PCRE .

Если вы хотите использовать stringr, вы можете использовать str_match_all:

> library(stringr)
> x <- "This is mystring hola 8 and this yourstring hola 9 and again mystrings op 12."
> str_match_all(x, "mystr.*?(\\d+)")[[1]][,2]
[1] "8"  "12"

где цифры занесены в группу 1.

...