2014-11-22 98 views
-1

我创建一个文本解析器,基本上查找下列:

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

我能找到的,通过使用正则表达式:

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

但是,这不会帮助,如果有嵌套条件。所以,我一直在寻找做更多的东西一样:

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

但是,这似乎并没有工作 - 这可能吗?

+0

http://php.net/manual/en/regexp.reference.back-references.php – Cheery 2014-11-22 03:18:54

回答

1

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

3

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

$1仅在替换字符串与preg_replace使用。