我正在使用在线Regex测试器(http://www.regexr.com)处理一些正则表达式,以帮助弄清楚语法。然而,当我尝试评估R中的模式时,我得到的结果与我期望的结果不同。
代码是:
grepl("Brent[^a-zA-Z]", c("Brent", "Brentwood", "Brent 01"))
我期待:TRUE, FALSE, TRUE
这是我在线测试人员所得到的。但R返回FALSE, FALSE, TRUE
。
我在这里缺少什么?
答案 0 :(得分:2)
第一个字符串无法匹配,因为[^a-zA-Z]
必须只使用一个字符。
您可以将其替换为\b
(字边界):\bBrent\b
。
并且,如果您想允许Brent01
之类的字符串(没有01
之前的空格),您可以使用前瞻:\bBrent(?![a-zA-Z])
(但我不知道是否此功能在R)中可用。