2009-08-06 32 views
1

我需要提取不平衡的元素結構的內容。在PCRE手冊中,我找到了匹配平衡支撐的解決方案。PCRE中沒有最外面的父元素的圓括號內容匹配

<\[ ((?>[^(<\[|\]>)]+) | (?R))* \]> 

爲我的測試

<[<[ab<[cd]>]><[ef]> 

它提取

0.0: <[ab<[cd]>]> 
0.1: <[ef]> 

但我想提取相同的內容,而最外層的括號:

0.0: ab<[cd]> 
0.1: ef 

可能有人點的解決方案?

+0

請張貼你想要的提取樣本的樣本。 – chaos 2009-08-06 16:16:22

+0

添加了所需的匹配 – mou 2009-08-06 17:46:22

回答

0

那麼,從你的正則表達式來看,最外層內的內容(它們在任何正常用法中都不是括號)已經被括在一個括號組中。我不知道你正在使用PCRE庫的上下文,但是你想要的提取應該出現在「匹配#1」(其中整個模式匹配是匹配#0)。即您的數據應該看起來像:

0.0: <[ab<[cd]>]> 
0.1: <[ef]> 
1.0: ab<[cd]> 
1.1: ef 
+0

目標系統是PHP 5.2。和用於這個正則表達式我收到 0.0:(<[ab<[cd]>]>) 0.1:(<[ef]>) 1.0:(<[cd]>) 1.1:(EF) – mou 2009-08-07 00:03:07

相關問題