2015-03-24 97 views
1

我有這樣的正則表達式代碼:正則表達式匹配和嵌套元素

<!--\s?BEGIN (\w+) \s?-->(.*?)<!--\s?END \w+\s?--> 

將匹配

<!-- BEGIN some_functional_name --> 
    //some stuff here later 
<!-- BEGIN some_functional_name --> 

我需要的是注意嵌套的意見,如果名稱是相同的。例如

<!-- BEGIN some_functional_name --> 
    //some stuff here later 
    <!-- BEGIN another_functional_name --> 
      //it'll match up to the below end another_functional_name 
    <!-- END another_functional_name --> 
<!-- END some_functional_name --> 

正如你可以看到它的嵌套,但正則表達式將捕獲的倒數第二END評論該BEGINEND不匹配。有沒有一種方法來獲取內聯正則表達式捕獲組?

例子:

<!--\s?BEGIN (\w+) \s?-->(.*?)<!--\s?END $1\s?--> 

雖然我還就如何處理嵌套無能?我應該使用積極的環視還是什麼?

回答

1

您應該使用backreference,例如, '\ 1'。

<!--\s?BEGIN (\w+) \s?-->(.*?)<!--\s?END \1\s?--> 

這是example

+0

謝謝你,我將不得不閱讀反向引用。 – EasyBB 2015-03-24 22:57:50

+0

您現在的位置:http://www.regular-expressions.info/backref.html – 2015-03-24 23:00:16

+0

謝謝你,一旦時間到了,我會馬上接受 – EasyBB 2015-03-24 23:02:55