在其他全局变量之间匹配PHP全局变量

时间:2016-09-16 07:37:08

标签: php regex global-variables

我正在尝试解析包含全局变量的项目文件,其中一些变量有多个全局变量。

示例:

global $ID, $NR, $USER; 
global $NR;

我只会在它们之间找到$NR变量。

我的RegEx:

global[?\w+($NR)+\s+?]

这找到了很多全局变量,但不是$ NR。怎么了?

1 个答案:

答案 0 :(得分:2)

您可以使用

^\s*global\s*\$\w+(?:,\s*\$\w+)*;$

此RegEx将捕获所有全局变量,而不管多个变量声明或单个变量。

RegEx说明:

  1. ^:行的开头
  2. \s*:零个或多个空格
  3. global:匹配确切的字符串 global
  4. \$:匹配$符号。由于$在RegEx中具有不同的含义,因此需要通过使用反斜杠进行转义才能完全匹配。
  5. \w+:匹配一个或多个字母数字和_个字符。 \w = [a-zA-Z0-9_]
  6. (?:,\s*\$\w+)*
    • (?:...):非捕获群组
    • ,:匹配,符号
    • \s*:匹配零个或多个空格字符
    • (...)*:将该组匹配零次或多次。
  7. ;:匹配;符号
  8. $:行尾
  9. RegEx101 Demo

    添加RegEx铁路图以便更好地理解。

    RegEx Railroad Diagram

    注意:如果分号后有空格,请在分号后\s*之前添加$