Regex 提取R中两个特定单词之间的字符串
我有以下字符串:Regex 提取R中两个特定单词之间的字符串,regex,r,Regex,R,我有以下字符串:“高露洁产品好但不好” 我想提取PRODUCT和ok之间的所有单词。您可以使用gsub: vec <- "PRODUCT colgate good but not goodOKAY" gsub(".*PRODUCT\\s*|OKAY.*", "", vec) # [1] "colgate good but not good" s <- "PRODUCT colgate good but not goodOKAY" sub(".*PRODUCT *(.*?) *OK
“高露洁产品好但不好”
我想提取
PRODUCT
和ok
之间的所有单词。您可以使用gsub
:
vec <- "PRODUCT colgate good but not goodOKAY"
gsub(".*PRODUCT\\s*|OKAY.*", "", vec)
# [1] "colgate good but not good"
s <- "PRODUCT colgate good but not goodOKAY"
sub(".*PRODUCT *(.*?) *OKAY.*", "\\1", s)
vecx=“产品高露洁好但不好好”
图书馆(stringr)
str_extract(string=x,pattern=“(?这可以通过sub
完成:
vec <- "PRODUCT colgate good but not goodOKAY"
gsub(".*PRODUCT\\s*|OKAY.*", "", vec)
# [1] "colgate good but not good"
s <- "PRODUCT colgate good but not goodOKAY"
sub(".*PRODUCT *(.*?) *OKAY.*", "\\1", s)
不需要软件包
下面是正则表达式的可视化:
.*PRODUCT *(.*?) *OKAY.*
您可以使用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"
x您可以使用包unglue:
library(脱胶)
x[1]“高露洁好但不好”
@g-grothendieck如果我想提取“高露洁好”和“好”之间的单词,我会期望“但不是”,相反,如果我将“PRODUCT”和“OKAY”值直接更改为“高露洁好”和“好”,它会返回“如果我将“PRODUCT”和“OKAY”值更改为“colgate好”和“good”,这对我不起作用:“找不到函数”perl“'不确定包是否丢失或丢失something@SimonC.stringr
软件包在不久前更新,不再需要或使用perl
函数,因此他们将其从软件包中删除。我刚刚也从答案中删除了它,因此它可以与当前版本的stringr
一起使用。