Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 提取R中两个特定单词之间的字符串_Regex_R - Fatal编程技术网

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)
vec
x=“产品高露洁好但不好好”
图书馆(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
一起使用。