2

如果我想匹配所有出现的单词foo,我会使用\bfoo\b还是不使用最后一个?似乎两者都有效,但什么是正确的?

4

3 回答 3

8

您需要同时使用两者。如果没有最后一个\b,您将在字符串上获得匹配,例如:

"I love football"
"You foolishly left off your second word boundary"
于 2013-02-05T23:18:14.023 回答
4

但是,请注意,单词边界\b的定义是基于以下定义的\w:单词边界是在非单词字符和单词字符之间定义的,其中单词字符由 定义\w\w对于 ASCII 字符串等价于[A-Za-z0-9_],因此\bfoo\b拒绝以下情况:

foo123
3富
foo_bar
fun_foo

由于数字 和_被认为是单词字符,如果它们紧挨着foo,它不会形成单词边界,因此\bfoo\b不会匹配上述任何一个。

于 2013-02-06T01:19:24.827 回答
2

给定以下输入:

foo foobar

此正则表达式将仅匹配第一个foo

\bfoo\b

此正则表达式将匹配第一个和fooin foobar

\bfoo
于 2013-02-06T00:04:14.187 回答