R中的regexp引起的麻烦:匹配由空格或字符串

时间:2017-03-08 16:49:41

标签: r regex stringi

我想计算一个字典中出现在字符串中的单词数,如果它被空格包围,或者它是在字符串的开头或结尾。

我正在使用this这样的答案:

library(stringi)

testStr <- c("dutch dutch brown", "brown ", "AAdutch", "dutchAA", "AAbrown",
             "brownAA", "hello")
stri_count_regex(testStr, "(^|\\s+)dutch|brown(\\s+|$)")

返回3 1 0 1 1 0 0,但我期待3 1 0 0 0 0 0。所以问题在于它还会计算我不想要的"dutchAA""AAbrown"

我对此有点疑惑,因为当我在RegExr上运行时,这个正则表达式工作正常。

1 个答案:

答案 0 :(得分:2)

尝试使用以下正则表达式

(?:\b|\s+)(?:dutch|brown)(?:\s+|\b)

<强> regex demo

<强> - [R

library(stringi)

testStr <- c("dutch dutch brown", "brown ", "AAdutch", "dutchAA", "AAbrown",
             "brownAA", "hello")
stri_count_regex(testStr, "(?:\\b|\\s+)(?:dutch|brown)(?:\\s+|\\b)")  # 3 1 0 0 0 0 0