如果我想匹配单词foo
的所有出现,我会使用'bfoo'b
还是不使用最后一个?看起来两者都有效,但什么才是合适的呢?
您需要同时使用两者。如果没有最后一个'b
,您将在字符串上获得匹配,例如:
"I love football"
"You foolishly left off your second word boundary"
但是,请注意,单词边界'b
的定义是基于'w
的定义:当单词边界位于非单词字符和单词字符之间时,就会定义单词边界,其中单词字符由'w
定义。ASCII字符串的'w
等同于[A-Za-z0-9_]
,因此'bfoo'b
也拒绝情况,例如:
foo1233英尺foo_barfun_foo
由于数字和_
被视为单词字符,如果它们紧挨着foo
,就不会形成单词边界,因此'bfoo'b
将与上述任何一个都不匹配。
给定以下输入:
foo foobar
此正则表达式将只匹配第一个foo
:
'bfoo'b
此正则表达式将匹配foobar
:中的第一个foo
'bfoo