对于RegEx中的单词边界(),我需要在单词之前和之后,或者刚好在单词之前


With word boundaries () in RegEx do I need to have it before AND after the word, or just before?

如果我想匹配单词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