PHP正则表达式单词边界排除下划线_
我正在使用regex word boundary\b,我试图在下面的PHP正则表达式单词边界排除下划线_,php,regex,localization,preg-match,word-boundary,Php,Regex,Localization,Preg Match,Word Boundary,我正在使用regex word boundary\b,我试图在下面的$sential中匹配foo,但结果不是我所需要的,下划线正在折磨我,我希望下划线成为单词边界,就像连字符或空格一样: $sentence = "foo_foo_foo foo-foo_foo"; X X X YES X X 预期: $sentence = "foo_foo_foo foo-foo_foo"; YES YES YES YES YES YES
$sential
中匹配foo
,但结果不是我所需要的,下划线
正在折磨我,我希望下划线成为单词边界,就像连字符或空格一样:
$sentence = "foo_foo_foo foo-foo_foo";
X X X YES X X
预期:
$sentence = "foo_foo_foo foo-foo_foo";
YES YES YES YES YES YES
我的代码:
preg_match("/\bfoo\b/i", $sentence);
这是你想要的吗
preg_match_all("/foo/i", $sentence, $matches);
var_dump($matches);
您必须创建边界
(?:\b|_\K)foo(?=\b|_)
您可以从
\w
中减去\u
,并使用明确的单词边界:
/(?
请参阅。注意\bfoo
=(?和foo(?!\w)
=foo\b
,然后从\w
中减去\uu
(等于[^\w]
)将导致[^\w\/code>
在PHP中,您可以使用preg\u match\u all
查找所有匹配项:
preg\u match\u all(“/”(?你试过在线搜索吗?我在谷歌上找不到这个特定的问题。你可以在这里使用preg\u split
而不是preg\u match
?@Sunny网上有关于这个的文章,相关问题部分有许多与他的相关的不同问题。@sectus它必须是preg\u match:(不,因为它也将匹配foobar,我只需要完整的单词