意外的R正则表达式评估

时间:2014-08-05 10:47:46

标签: regex r

我正在使用在线Regex测试器(http://www.regexr.com)处理一些正则表达式,以帮助弄清楚语法。然而,当我尝试评估R中的模式时,我得到的结果与我期望的结果不同。

代码是:

grepl("Brent[^a-zA-Z]", c("Brent", "Brentwood", "Brent 01"))

我期待:TRUE, FALSE, TRUE这是我在线测试人员所得到的。但R返回FALSE, FALSE, TRUE

我在这里缺少什么?

1 个答案:

答案 0 :(得分:2)

第一个字符串无法匹配,因为[^a-zA-Z]必须只使用一个字符。

您可以将其替换为\b(字边界):\bBrent\b

并且,如果您想允许Brent01之类的字符串(没有01之前的空格),您可以使用前瞻:\bBrent(?![a-zA-Z])(但我不知道是否此功能在R)中可用。