如何从特定单词后的字符串中提取

时间:2019-02-06 12:17:42

标签: r regex

我有这个字符串:

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 :(得分:1)

一个选项是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"

答案 1 :(得分:0)

您可以分割连字符并得到最后一个单词,即

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

或者使用word中的stringr

stringr::word(string, -1, sep = '-')
#[1] "SOM_MT_ECT_CVE"