正则表达式不';t在php中运行,如何运行?

正则表达式不';t在php中运行,如何运行?,php,regex,preg-match-all,Php,Regex,Preg Match All,我有一个reg表达式:test(?:$|\s)这就是我想要的 基本上看起来像test\u test\u test browser test.这样的字符串,并返回除\u test\u之外的所有test实例 我遇到的问题是,下面的内容不会返回任何匹配项,但regexr.com会返回 if (preg_match_all("/" . $word. "(?:$|\s)/i", $msg, $m)) { var_dump($m); } 我做错了什么 返回所有测试实例,但\u测试 试着用消极的前瞻

我有一个reg表达式:
test(?:$|\s)
这就是我想要的

基本上看起来像
test\u test\u test browser test.
这样的字符串,并返回除
\u test\u之外的所有
test
实例

我遇到的问题是,下面的内容不会返回任何匹配项,但regexr.com会返回

if (preg_match_all("/" . $word. "(?:$|\s)/i", $msg, $m)) {
    var_dump($m);
}
我做错了什么

返回所有
测试
实例,但
\u测试

试着用消极的前瞻

\b(?!_)test(?!_)\b
此处
\b
用于单词边界

这是

示例代码:

$re = "/\\b(?!_)test(?!_)\\b/i";
$str = "test _test_ test browser test.";

preg_match_all($re, $str, $matches);

此代码应适用于基于前瞻的正则表达式:

$str = 'test _test_ test  browser test';
$word = 'test';
if (preg_match_all('/\b' . preg_quote($word) . '(?=$|\s)/i', $str, $m)) {
    var_dump($m);
}

预期的输出是什么?规则是什么?将您的
\s
转义到
\\s
。正要发布相同的-或使用单个quotes@Braj基本上在字符串中看起来像
test\u test\u test browser test.
并返回所有
test
实例exvept`\u test\u@Patrioticcow是否应该匹配
\u test
?那么
测试呢
?请使用lookback。这不是JS。双重逃避也是一种痛苦。只需使用单引号。我对php一无所知。我只懂一点正则表达式。这是从演示站点自动生成的代码。按照regex模式更改它。