2009-08-06 18 views
1

アンバランスな括弧構造のコンテンツを抽出する必要があります。 PCREのマニュアルでは、バランスのとれた括弧のための解決策が見つかりました。私のテストPCRE内の最も外側の括弧なしの括弧の内容

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

については

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

それは

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

を抽出し、しかし、私は、最も外側の括弧なしで同じコンテンツを抽出したい:

0.0: ab<[cd]> 
0.1: ef 

誰もが解決策を指してもらえますか?

+0

希望する抽出のサンプルを投稿してください。 – chaos

+0

が追加されました。 – mou

答えて

0

正規表現の見た目からは、一番外側のエンクロージャ内のコンテンツ(通常の使用法ではカッコではありません)はすでに括弧内のグループに取り込まれています。私はあなたがPCREライブラリを使っている文脈を知っていませんが、あなたが望む抽出は "match#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