php - 正则表达式排除引号之间的单词

时间:2017-07-07 22:42:13

标签: php regex

我希望将所有字词与\w匹配,并排除某些特定字词和数字。 但是我想用这个(?!"\w+")之类的东西排除双引号和单引号之间的单词,但似乎不起作用。

我该怎么办?这是我正在使用的

/(?!return|if|floor|else|elseif|NULL|null|pow|function|\d+)\b(\w+)/

1 个答案:

答案 0 :(得分:0)

您可以使用PCRE中预测的(*SKIP)(*F)匹配并跳过某些子字符串,如下所示:

/(['"])\w+\1(*SKIP)(*F)|\b(?!return|elseif|else|if|floor|NULL|pow|function|\d+)\w+/i

RegEx Demo

  • (['"])匹配单引号或双引号,并在第1组
  • 中捕获它
  • \w+匹配一个单词
  • \1反对第1组,以确保我们的结束报价与第1组相同
  • (*SKIP)(*F)将跳过此匹配