我已经在三个不同的"正则表达式生成器"上在线尝试过这个正则表达式。它运行良好。但当我在本地机器上运行它时,我会得到空数组作为响应。
这是我的密码。
$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);