G. *_*eck 29
这可以通过以下方式完成sub:
s <- "PRODUCT colgate good but not goodOKAY"
sub(".*PRODUCT *(.*?) *OKAY.*", "\\1", s)
Run Code Online (Sandbox Code Playgroud)
赠送:
[1] "colgate good but not good"
Run Code Online (Sandbox Code Playgroud)
不需要包裹.
这是正则表达式的可视化:
.*PRODUCT *(.*?) *OKAY.*
Run Code Online (Sandbox Code Playgroud)

Gre*_*gor 17
x = "PRODUCT colgate good but not goodOKAY"
library(stringr)
str_extract(string = x, pattern = perl("(?<=PRODUCT).*(?=OKAY)"))
Run Code Online (Sandbox Code Playgroud)
(?<=PRODUCT) - 看看比赛背后 PRODUCT
.* 匹配新线以外的一切.
(?=OKAY)- 展望未来OKAY.
我应该补充一下你不需要这个stingr包,基本功能sub和gsub工作正常.我使用stringr来保证语法的一致性:无论是提取,替换,检测等,函数名称都是可预测和可理解的,并且参数的顺序是一致的.我使用stringr它是因为它使我无需每次都需要文档.
Sve*_*ein 16
你可以使用gsub:
vec <- "PRODUCT colgate good but not goodOKAY"
gsub(".*PRODUCT\\s*|OKAY.*", "", vec)
# [1] "colgate good but not good"
Run Code Online (Sandbox Code Playgroud)
Tyl*_*ker 10
您可以使用qdapRegex包中的rm_between函数.它需要一个字符串和一个左右边界如下:
x <- "PRODUCT colgate good but not goodOKAY"
library(qdapRegex)
rm_between(x, "PRODUCT", "OKAY", extract=TRUE)
## [[1]]
## [1] "colgate good but not good"
Run Code Online (Sandbox Code Playgroud)