是否可以在正则表达式匹配中使用 $1


Is it possible to use $1 in a regex match?

我正在创建一个文本解析器,它基本上会查找以下内容:

{IF SOMETHING} then include this text {ENDIF SOMETHING}

我可以通过使用正则表达式找到它:

/{IF [A-Z]+}.*{ENDIF [A-Z]}/

但如果存在嵌套条件,这将无济于事。所以我想做一些更像的事情:

/{IF ([A-Z]+)}.*{ENDIF $1}/

但这似乎不起作用 - 这可能吗?

您也可以

使用其他语法: 'g{1}这对于避免与反向引用后跟文字数字的混淆很有用。此语法允许使用如下所示的相对引用:'g{-1}(即左侧最后一个定义的捕获组)

$1 仅用于带有 preg_replace 的替换字符串。

PHP Regex 使用 ''1 而不是 $1。有关更多信息,请参阅有关正则表达式反向引用的 PHP 手册。