您可以使用str_match
和STR1 (.*?) STR2
(注意空格是"有意义的",如果您只想匹配STR1
和STR2
之间的任何内容,请使用STR1(.*?)STR2
,或者使用STR1\\s*(.*?)\\s*STR2
来修剪所需的值).如果有多次出现,请使用str_match_all
.
此外,如果需要匹配跨越换行符/换行符的字符串,请在模式的开头添加(?s)
:(?s)STR1(.*?)STR2
/(?s)STR1\\s*(.*?)\\s*STR2
.
library(stringr)
a <- " anything goes here, STR1 GET_ME STR2, anything goes here"
res <- str_match(a, "STR1\\s*(.*?)\\s*STR2")
res[,2]
[1] "GET_ME"
使用base R regexec
的另一种方法(获得第一个匹配):
test <- " anything goes here, STR1 GET_ME STR2, anything goes here STR1 GET_ME2 STR2"
pattern <- "STR1\\s*(.*?)\\s*STR2"
result <- regmatches(test, regexec(pattern, test))
result[[1]][2]
[1] "GET_ME"