2014-11-22 80 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使用。