说我有字符串向量:
v = c("SPX.Close", "AAPL.Low", "Lo", "LowPrice", "PriceLow", "low")
如何编写匹配所有类似短语"low"的字符串的正则表达式?
grep("lo", v, ignore.case=T) # 1 2 3 4 5 6 7
这也匹配第一个字符串,我不想要.
lo 如果没有前面的字母怎么匹配c?
zx8*_*x81 16
R使用支持lookbehind的PCRE引擎.做这个:
grep("(?<!c)lo", subject, perl=TRUE, value=TRUE, ignore.case=TRUE);
消极的外观(?<!c)断言,在当前位置之前的东西不是ac
选项2:检查大写字母,打开案例不敏感内联
根据您的输入,更通用的选择是断言lo不是大写字母:
grep("(?<![A-Z])(?i)lo", subject, perl=TRUE, value=TRUE);
对于此选项,我们使用内联修饰符(?i)打开不区分大小写,但只有在我们检查到我们的位置之前没有大写字母之后.
参考