正则表达词边界

时间:2010-09-18 14:20:30

标签: regex

我正在使用一个简单的正则表达式来匹配单词的开头,使用单词boundary matcher,比如

/(\b)rice/

将匹配“米饭和盐的年份”而不是“maurice ravel”等等。

但是,我找到了!在字符串的开头是否定字边界匹配器。所以字符串“!!”匹配“some text !!”。

任何人都知道为什么会发生这种情况?没看到它是一个特殊的角色。

2 个答案:

答案 0 :(得分:3)

t!之间有一个单词边界,因为t是单词字符而!不是单词字符。除了你认为它是一个单词字符之外,!没有什么特别之处,但事实并非如此。

由于你没有处理“单词”,单词边界不是你想要的。相反,您可以使用lookbehind断言并检查前一个字符是否为空格,行首或您希望允许作为分隔符的任何其他字符。请注意,并非所有正则表达式引擎都支持lookbehind断言。

答案 1 :(得分:0)

这是第二个正则表达式:?

/\b!!/

如果是这样,那么它应该匹配'!!'在'一些文字!!'因为在第二个't'之后和第一个'!'之前有一个单词边界。

如果不是,我们该怎么猜?