PHP Regex Word Boundary исключить подчеркивание _

Я использую регулярное выражение границы слова \ 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);

1

Решение

Вы должны были бы создать DIY границы.

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

Другие решения

Делает ли это то, что вы хотите?

preg_match_all("/foo/i", $sentence, $matches);
var_dump($matches);
0

По вопросам рекламы [email protected]