Как извлечь из строки после конкретного слова - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть эта строка:

string <-"DIS_S_CD_EFS-NO_PCI-CD_ACT_CG-SOM_MT_ECT_CVE"

Мне нужно извлечь из нее только SOM_MT_ECT_CVE.

Поэтому для меня ключевое слово - SOM (определить его позицию).

Я пытался использовать это:

d <-substr(gregexpr(pattern ='SOM',"DIS_S_CD_EFS-NO_PCI-CD_ACT_CG-SOM_MT_ECT_CVE"),
           nchar("DIS_S_CD_EFS-NO_PCI-CD_ACT_CG-SOM_MT_ECT_CVE"),"DIS_S_CD_EFS-NO_PCI-CD_ACT_CG-SOM_MT_ECT_CVE")

Но он возвращает значения NA.

Ответы [ 2 ]

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

Вы можете разделить дефис и получить последнее слово, то есть

tail(strsplit(string, '-', fixed = TRUE)[[1]], 1)
#[1] "SOM_MT_ECT_CVE"

Или с помощью word из stringr,

stringr::word(string, -1, sep = '-')
#[1] "SOM_MT_ECT_CVE"
0 голосов
/ 06 февраля 2019

Один из вариантов - sub для сопоставления символов (.*) до 'SOM', захвата 'SOM' для остальных символов в группе ((...)) и при замене используйте обратную ссылку (\\1) захваченной группы

sub(".*(SOM_.*)", "\\1", string)
#[1] "SOM_MT_ECT_CVE"

или с использованием stringr

library(stringr)
str_extract(string, "SOM.*")
#[1] "SOM_MT_ECT_CVE"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...