2016-02-06 3 views
3

У меня есть строка, отформатированная, например, как «segmentation_level1_id_10», и хотел бы извлечь связанный с ней номер уровня (т. Е. Число непосредственно после уровня слова).Как найти шаблон рядом с заданной строкой с использованием регулярного выражения в R

У меня есть решение, которое делает это в два этапа, сначала находит образец level\\d+ затем заменяет уровень с отсутствующими после, но я хотел бы знать, если это возможно, чтобы сделать это за один шаг только с str_extract

Пример ниже:

library(stringr) 

segmentation_id <- "segmentation_level1_id_10" 

segmentation_level <- str_replace(str_extract(segmentation_id, "level\\d+"), "level", "") 

ответ

4

Один из способов сделать это с помощью stringr библиотеки str_extract функции с регулярным выражением показывая: 'назад

> library(stringr) 
> s = "segmentation_level1_id_10" 
> str_extract(s, "(?<=level)\\d+") 
## or to make sure we match the level after _: str_extract(s, "(?<=_level)\\d+") 
[1] "1" 

Или с помощью str_match, что позволяет извлечь захваченные тексты группы:

> str_match(s, "_level(\\d+)")[,2] 
[1] "1" 

Это может быть сделано с основанием R, используя gsub и делает использование одного и того же механизма захвата, используемого в str_match, но и с помощью обратной ссылки для восстановления снятый текст в результате замены:

> gsub("^.*level(\\d+).*", "\\1", s) 
[1] "1" 
+0

Спасибо за ответы –

Смежные вопросы