使用正则表达式匹配未被引号括起的某个单词

时间:2013-10-25 12:38:24

标签: regex pcre

起初我觉得用正则表达式做这件事是非常微不足道的,但事实证明,我错了。

我似乎无法通过正则表达式找到一种简单可靠的方法,所以我将它放在那里:

我希望匹配未被引号包围的FOO的每个实例,例如:

FOO

xFOO

FOOy

“FOO

FOO“

但不是“FOO”

换句话说,我想找到FOO,但前提是它不在引号中。 我希望这是有道理的。 : - )

2 个答案:

答案 0 :(得分:4)

在正则表达式中使用外观:

(?:(?<!")FOO|FOO(?!"))

$s = 'FOO"';
if (preg_match('/(?:(?<!")FOO|FOO(?!"))/', $s, $m))
    print_r($m);

这将匹配FOO "后面没有匹配或如果前面没有"匹配FOO

换句话说,只有当FOO用双引号括起来时,它才会与FOO匹配。

现场演示:http://ideone.com/kL3I3M

答案 1 :(得分:0)

你可以尝试这种模式:

"FOO"(*SKIP)(?!)|FOO

(因为debuggex没有完全支持pcre,你可以使用http://regex.larsolavtorvik.com/http://www.phpliveregex.com/http://regexp.zug.fr/进行测试