1

文字列で配列のような出現を見つけようとしています。

たとえば、このテキストの場合

Ut ac nisi eget est tempus mattis. Sed et dapibus lorem. Suspendisse laoreet ante arcu, sed ornare a(diam)[test] ornare eget. Nunc a(pulvinar)[anoter][test] porttitor accumsan. Donec quis accumsan enim.Ut sed sem posuere, a(pharetra)[another[nested][a(test)]] sapien a, molestie odio. Donec euismod, lectus et sollicitudin condimentum, felis dolor feugiat arcu

太字部分を合わせたい。

私はここまで来ました:

\a\((.*?)\)(\[.*?])+

これは最初の 2 つに一致しますが、最後のテストでは最後の閉じ括弧が欠落しています (もう一度ネストすると、2 つの閉じ括弧が欠落します)。

結果:

a(diam)[test]
a(pulvinar)[anoter][test]
a(pharetra)[another[nested][a(test)] <--- last closing bracket missing.

助けはありますか?

4

1 に答える 1

1

次のように、ネストされた構造を正規表現に埋め込むのはどうですか。

a\(\w+\)(\[.+?(\[.+\])*\])+
              ---------  
              embeded nesting

編集:

(a\(\w+\)(?:\[.+?(?:\[.+\])*\])+)

「未定義」のキャプチャを軽減するために、非キャプチャ シンボルを追加しました。

于 2013-10-08T13:23:20.053 に答える