可以';t让regex正常工作.空退货


Can't get regex to work. Empty returns

我已经在三个不同的"正则表达式生成器"上在线尝试过这个正则表达式。它运行良好。但当我在本地机器上运行它时,我会得到空数组作为响应。

这是我的密码。

$string = "Testing '$test;";
preg_match_all("/('$[A-Za-z]*)/", $string, $match);
print_r($match);

响应为:

Array
(
    [0] => Array
        (
            [0] => 
        )
    [1] => Array
        (
            [0] => 
        )
)

我试过了http://regexr.com/,https://regex101.com/#pcre,http://www.phpliveregex.com/一切都很好。

发生了什么事?为什么preg_match_all在我的机器上返回空值?如何调试?

提前感谢

因为使用了双引号字符串文字,所以需要使用双反斜杠:

preg_match_all("/(''$[A-Za-z]*)/", $string, $match);

查看IDEONE演示

否则,后面带有字符的$将被解析为要展开的变量。

这就是为什么在大多数情况下,首选单个引用的文字(演示)(因为里面不需要变量扩展):

preg_match_all('/('$[A-Za-z]*)/', $string, $match);