2012-05-03 10 views
0

私はいくつかのコマンドを解析するアプリケーションを書いています。コマンドは、フォームに記載されている:中括弧で文字列を解析する

A {B}

私はAとB、Aは任意であるが、それが処理するのに十分な簡単ですしたいです。私が抱えている問題は、AとBの両方に、空白と '{'と '}'を含むほぼすべての文字を含めることができることです。ブラケットもバランスをとる必要はありません。これは、正規表現と解析することは可能ですか?そうでない場合は、あなたができると考えられる最も単純なことは何ですか?所与例えば

"parsme {FOO { "ハロー"}、{ "さようなら"}、{{{} {バー{ "アップ"}、{ "ダウン"}}"

そして:

A = "parseme {FOO { "ハロー"}、{ "さようなら"}、{{{}" とB "バー{ "アップ"}、{ "ダウン"}" =

+2

空白やその他の文字はそれほど問題にはなりませんが、角カッコを平衡させる必要がないと言えば、Bの開始位置はどのように知ることができますか? – jdi

+0

誰かがBとAを区別する方法を理解できません! – Ashe

+0

申し訳ありませんが、私はAの括弧がバランスをとる必要はないと言っていたはずです。 –

答えて

4

あなたができません正規表現を使用して括弧のような任意のネストを必要とするものを解析します(正規表現の確立された制限です。

Antlrのようなツールを使って文脈自由文法を使用する必要があります。

+1

+1。さて、ネストされた構造を解析するために、正規表現を使用することができます(http://stackoverflow.com/a/4234491/1191425)。あなたがしたいかどうか*あなた*までです... –

+1

@ Li-aungYip:人生のプログラミングからいくつかの人々を怖がらせることができる慎重に、! – Ashe

+1

@ Len:この特定のケースでは、それはチクリストが行っていた効果でした。 ;)すべての文字列処理の問題が正規表現ベースの解決法を認めているわけではなく、正規表現の解法を認めているものであっても、とにかく何か他のものと比べて良いことがあります。 –

関連する問題