起初我觉得用正则表达式做这件事是非常微不足道的,但事实证明,我错了。
我似乎无法通过正则表达式找到一种简单可靠的方法,所以我将它放在那里:
我希望匹配未被引号包围的FOO的每个实例,例如:
FOO
xFOO
FOOy
“FOO
FOO“
但不是“FOO”
换句话说,我想找到FOO,但前提是它不在引号中。 我希望这是有道理的。 : - )
答案 0 :(得分:4)
在正则表达式中使用外观:
(?:(?<!")FOO|FOO(?!"))
$s = 'FOO"';
if (preg_match('/(?:(?<!")FOO|FOO(?!"))/', $s, $m))
print_r($m);
这将匹配FOO
"
后面没有匹配或如果前面没有"
匹配FOO
换句话说,只有当FOO用双引号括起来时,它才会与FOO匹配。
答案 1 :(得分:0)
你可以尝试这种模式:
"FOO"(*SKIP)(?!)|FOO
(因为debuggex没有完全支持pcre,你可以使用http://regex.larsolavtorvik.com/或http://www.phpliveregex.com/或http://regexp.zug.fr/进行测试