PHP Regex Word Boundary排除下划线_

问题描述 投票:1回答:2

我正在使用正则表达式单词边界\ b,我正在尝试匹配以下foo中的$sentence但结果不是我需要的,underscore正在杀死我,我想要下划线是字形边界就像连字符或空格:

$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);
php regex localization preg-match word-boundary
2个回答
7
投票

你必须创建DIY边界。

(?:\b|_\K)foo(?=\b|_)

0
投票

这样做你想要的吗?:

preg_match_all("/foo/i", $sentence, $matches);
var_dump($matches);
© www.soinside.com 2019 - 2024. All rights reserved.