我正在使用一个简单的正则表达式来匹配单词的开头,使用单词boundary matcher,比如
/(\b)rice/
将匹配“米饭和盐的年份”而不是“maurice ravel”等等。
但是,我找到了!在字符串的开头是否定字边界匹配器。所以字符串“!!”匹配“some text !!”。
任何人都知道为什么会发生这种情况?没看到它是一个特殊的角色。
答案 0 :(得分:3)
t
和!
之间有一个单词边界,因为t
是单词字符而!
不是单词字符。除了你认为它是一个单词字符之外,!
没有什么特别之处,但事实并非如此。
由于你没有处理“单词”,单词边界不是你想要的。相反,您可以使用lookbehind断言并检查前一个字符是否为空格,行首或您希望允许作为分隔符的任何其他字符。请注意,并非所有正则表达式引擎都支持lookbehind断言。
答案 1 :(得分:0)
这是第二个正则表达式:?
/\b!!/
如果是这样,那么它应该匹配'!!'在'一些文字!!'因为在第二个't'之后和第一个'!'之前有一个单词边界。
(如果不是,我们该怎么猜?)