如果我想匹配所有出现的单词foo
,我会使用\bfoo\b
还是不使用最后一个?似乎两者都有效,但什么是正确的?
user2005643
问问题
6561 次
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
此正则表达式将匹配第一个和foo
in foobar
:
\bfoo
于 2013-02-06T00:04:14.187 回答