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

Как преобразовать следующую строку в R:

this_isastring_12(=32)

, чтобы сохранить только следующее

isastring_12

Например,

f('this_isastring_12(=32)') returns 'isastring_12'

Это должно работатьдля других строк с похожей структурой, но с другими символами

Другой пример с другой строкой схожей структуры

f('something_here_3(=1)') returns 'here_3'

Ответы [ 2 ]

2 голосов
/ 08 октября 2019

Мы можем использовать sub для извлечения всего: от первого подчеркивания до открывающей круглой скобки в тексте.

sub(".*?_(.*)\\(.*", "\\1", x)
#[1] "isastring_12" "here_3"       "string_4"    

, где x равно

x <- c("this_isastring_12(=32)", "something_here_3(=1)", "another_string_4(=1)")
1 голос
/ 08 октября 2019

Вы можете использовать пакет unglue .

Заимствование данных Ronak:

x <- c("this_isastring_12(=32)", "something_here_3(=1)", "another_string_4(=1)")
library(unglue)
unglue_vec(x, "{=.*?}_{res}({=.*?})")
#> [1] "isastring_12" "here_3"       "string_4" 
  • {=.*?} соответствует чему угодно, пока не будет сопоставлено следующее, ноничего не извлекает, потому что нет lhs для равенства
  • {res}, где имя res может быть заменено на что угодно, соответствует чему угодно и извлекает его
  • вне фигурных скобок, не нужно экранировать символы
  • unglue_vec() возвращает атомный вектор совпадений
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...