1

正規表現内の(ネストされている可能性のある)キャプチャグループを識別し、ツリーを作成する必要があります。特定のターゲットはJava-1.6であり、理想的にはJavaコードが欲しいです。簡単な例は次のとおりです。

"(a(b | c)d(e(f * g))h)"

これはに解析されます

"a(b|c)d(e(f*g))h"
... "b|c"
... "e(f*g)"
     ... "f*g"

ソリューションは、理想的には、カウント式、数量詞など、およびエスケープのレベルを考慮に入れる必要があります。ただし、これを見つけるのが簡単でない場合は、使用する構文を制限できるため、より単純なアプローチで十分な場合があります。

編集します。明確にするために。正規表現文字列自体を解析したい。そのためには、Java1.6正規表現のBNFまたは同等のものを知る必要があります。私は誰かがすでにこれをしていることを望んでいます。

結果の副産物は、プロセスが正規表現の有効性をテストすることです。

4

2 に答える 2

1

実際のパーサー/レクサーへのステップアップを検討してください: http://www.antlr.org/wiki/display/ANTLR3/FAQ+-+Getting+Started

複雑に見えますが、言語がかなり単純であれば、かなり簡単です。そうでない場合、正規表現でそれを行うと、おそらくあなたの人生は地獄になります:)

于 2009-09-15T22:46:57.497 に答える