我正在创建一个文本解析器,它基本上会查找以下内容:
{IF SOMETHING} then include this text {ENDIF SOMETHING}
我可以通过使用正则表达式找到它:
/{IF [A-Z]+}.*{ENDIF [A-Z]}/
但如果存在嵌套条件,那将无济于事。所以我希望做更多的事情:
/{IF ([A-Z]+)}.*{ENDIF $1}/
但这似乎不起作用 - 有可能吗?
答案 0 :(得分:3)
你也可以使用这个其他语法:\g{1}
有助于避免与后面跟着文字数字混淆。这种语法允许使用这样的相对引用:\g{-1}
(即左边最后定义的捕获组)
$1
仅用于preg_replace
的替换字符串。
答案 1 :(得分:1)
PHP Regex使用\ 1而不是$ 1。有关更多信息,请参阅有关正则表达式返回参考的PHP Manual。