php - PHP 中的正则表达式期望匹配像 "${string}"这样的字符串,但不起作用

标签 php regex

我有:

$ap=0;
$matches=array();
d($ap, $vv[$value],$matches);
$ap = preg_match("/\$[({].+[)}]/", $vv[$value], $matches);
d($ap, $vv[$value],$matches);

d() 是一个自定义函数,例如 var_dump()

$vv[$value]为“exec_prefix = ${prefix}”时,为什么$ap0,并且没有匹配项($matches 仍然是一个空数组)?

我希望匹配“${prefix}”。

我尝试了 regexpal.com 中的正则表达式,它也匹配。

最佳答案

在您的正则表达式中,您尝试使用 $ 作为字段标记的开头。由于 PHP 需要对 $ 进行转义,否则它会认为它引入了变量替换(在双引号中),它将使用您为此目的而包含的 \ 。但这然后将正则表达式保留为

/$[({].+[)}]/

这意味着它将使用 $ 作为字符串标记的结尾 - 因此找不到您之后的内容。

因此,您需要在美元之前进行第二次逃逸,以确保它被正确拾取......

$ap = preg_match("/\\$[({].+[)}]/", $vv[$value], $matches);

关于php - PHP 中的正则表达式期望匹配像 "${string}"这样的字符串,但不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56389426/

相关文章:

php - 表单输入中的默认日期为上个月的第一天和最后一天

regex - Elasticsearch:在字段上运行聚合并使用不匹配值的正则表达式过滤掉特定值

java - 使用 split 从 Arraylist 中删除正则表达式

php - 如何读取html表的位置并在php mysql中显示

php - Visual Studio Code : Unable to locate phpcs

php - 登录用户不显示表单

PHP 返回一个字符串,其中每个单词的第一个字符均为小写

regex - 正则表达式中的 Perl 正则表达式

java - 正则表达式获取一个或两个分隔符之间的字符串

regex - sed 中的非贪婪(不情愿)正则表达式匹配?