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

时间:2014-11-22 03:05:02

标签: php regex

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

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

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

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

但如果存在嵌套条件,那将无济于事。所以我希望做更多的事情:

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

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

2 个答案:

答案 0 :(得分:3)

你也可以使用这个其他语法:\g{1}有助于避免与后面跟着文字数字混淆。这种语法允许使用这样的相对引用:\g{-1} (即左边最后定义的捕获组)

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

答案 1 :(得分:1)

PHP Regex使用\ 1而不是$ 1。有关更多信息,请参阅有关正则表达式返回参考的PHP Manual