3 回答
TA贡献1829条经验 获得超6个赞
您可以使用str_matchwith STR1 (.*?) STR2(请注意,如果您只想匹配两者之间的任何内容STR1并STR2使用,则空格是“有意义的” STR1(.*?)STR2)。如果出现多次,请使用str_match_all。
library(stringr)
a<-" anything goes here, STR1 GET_ME STR2, anything goes here"
res <- str_match(a, "STR1 (.*?) STR2")
res[,2]
[1] "GET_ME"
使用基数R的另一种方法regexec(获得第一个匹配项):
test = " anything goes here, STR1 GET_ME STR2, anything goes here STR1 GET_ME2 STR2"
pattern="STR1 (.*?) STR2"
result <- regmatches(test,regexec(pattern,test))
result[[1]][2]
[1] "GET_ME"
TA贡献1833条经验 获得超4个赞
这是使用基数R的另一种方法
a<-" anything goes here, STR1 GET_ME STR2, anything goes here"
gsub(".*STR1 (.+) STR2.*", "\\1", a)
输出:
[1] "GET_ME"
TA贡献1852条经验 获得超1个赞
另一种选择是用于qdapRegex::ex_between提取左右边界之间的字符串
qdapRegex::ex_between(a, "STR1", "STR2")[[1]]
#[1] "GET_ME"
它还适用于多次出现
a <- "anything STR1 GET_ME STR2, anything goes here, STR1 again get me STR2"
qdapRegex::ex_between(a, "STR1", "STR2")[[1]]
#[1] "GET_ME" "again get me"
或多个左右边界
a <- "anything STR1 GET_ME STR2, anything goes here, STR4 again get me STR5"
qdapRegex::ex_between(a, c("STR1", "STR4"), c("STR2", "STR5"))[[1]]
#[1] "GET_ME" "again get me"
第一次捕获在“ STR1”和“ STR2”之间,而第二次捕获在“ STR4”和“ STR5”之间。
- 3 回答
- 0 关注
- 2781 浏览
添加回答
举报