如果我想匹配单词foo
的所有匹配项,我会使用\bfoo\b
还是不使用最后一个?它似乎都有效,但是什么是正确的?
答案 0 :(得分:7)
您需要同时使用两者。如果没有最后一个\b
,您将获得字符串匹配,例如:
"I love football"
"You foolishly left off your second word boundary"
答案 1 :(得分:3)
但是,请注意,单词边界\b
的定义基于\w
的定义:当单词边界位于非单词字符和单词字符之间时,定义单词边界。字符由\w
定义。对于ASCII字符串,\w
等同于[A-Za-z0-9_]
,因此\bfoo\b
也拒绝例如:
foo123 3foo foo_bar fun_foo
由于数字和_
被认为是单词字符,如果它们位于foo
旁边,则它不会形成单词边界,因此\bfoo\b
将不符合上述任何一个
答案 2 :(得分:2)
给出以下输入:
foo foobar
此正则表达式仅匹配第一个foo
:
\bfoo\b
此正则表达式将匹配第一个以及foo
中的foobar
:
\bfoo