Php 对于正则表达式中的单词边界(\b),我需要在单词之前和之后,还是在单词之前?
如果我想匹配所有出现的单词Php 对于正则表达式中的单词边界(\b),我需要在单词之前和之后,还是在单词之前?,php,regex,Php,Regex,如果我想匹配所有出现的单词foo,我会使用\bfoo\b还是不使用最后一个?这两种方法似乎都有效,但什么才合适呢?您需要同时使用这两种方法。如果没有最后一个\b,您将获得以下字符串的匹配: "I love football" "You foolishly left off your second word boundary" foo123 3foo foo_bar fun_foo 考虑到以下输入: foo foobar 此正则表达式将仅匹配第一个foo: \bfoo\b 此正则表达式将匹配
foo
,我会使用\bfoo\b
还是不使用最后一个?这两种方法似乎都有效,但什么才合适呢?您需要同时使用这两种方法。如果没有最后一个\b
,您将获得以下字符串的匹配:
"I love football"
"You foolishly left off your second word boundary"
foo123
3foo
foo_bar
fun_foo
考虑到以下输入:
foo foobar
此正则表达式将仅匹配第一个foo
:
\bfoo\b
此正则表达式将匹配foobar
中的第一个和foo
:
\bfoo
但是,请注意,单词边界
\b
的定义基于\w
的定义:单词边界是在非单词字符和单词字符之间定义的,其中单词字符由\w
定义[A-Za-z0-9\]
,因此\bfoo\b
也拒绝以下情况:
"I love football"
"You foolishly left off your second word boundary"
foo123
3foo
foo_bar
fun_foo
食品123
3foo
富吧
芬福
由于数字和<代码> <>代码>考虑字字符,如果它们紧邻代码> fo,则不会形成单词边界,因此<代码> \bfo\b>代码>将不匹配上述任何内容。