匹配字符串,但前提是没有其他字符串

Dan*_*ian 10 regex grep r

说我有字符串向量:

v = c("SPX.Close", "AAPL.Low", "Lo", "LowPrice", "PriceLow", "low")
Run Code Online (Sandbox Code Playgroud)

如何编写匹配所有类似短语"low"的字符串的正则表达式?

grep("lo", v, ignore.case=T) # 1 2 3 4 5 6 7

这也匹配第一个字符串,我不想要.

lo 如果没有前面的字母怎么匹配c

zx8*_*x81 16

负面观察(R中的PCRE)

R使用支持lookbehind的PCRE引擎.做这个:

grep("(?<!c)lo", subject, perl=TRUE, value=TRUE, ignore.case=TRUE);
Run Code Online (Sandbox Code Playgroud)

消极的外观(?<!c)断言,在当前位置之前的东西不是ac

选项2:检查大写字母,打开案例不敏感内联

根据您的输入,更通用的选择是断言lo不是大写字母:

grep("(?<![A-Z])(?i)lo", subject, perl=TRUE, value=TRUE);
Run Code Online (Sandbox Code Playgroud)

对于此选项,我们使用内联修饰符(?i)打开不区分大小写,但只有在我们检查到我们的位置之前没有大写字母之后.

参考