2017-05-02 4 views
0

私は数式用のパーサを構築しています。入れ子になった括弧に問題があります。この種類の式を無限大のネストを考える単純な正規表現はありますか?式のネストされた括弧RegEx C#

If(Condition) Then { Action } Else { Action2 } 

例:リターンの

1: if (Category = 4) then {Validation(HB):Insert(COMNP)} else {Nothing} 

2: if (Requested(INDP)) then { if (Result(INDP) > 70) then { DoNothing } else { MakeSomething } else { MakeSomethingElse } 

例:

これは、式が構成されている方法です

:このような試合アレイと

1: if (Category = 4) then {return 1;} else {return 2;} 

2: if (Requested(INDP)) then { if (Result(INDP) > 70) then { return 1; } else { return 2; } else { return 3;} 

[1]: Validation(HB):Insert(COMNP) 
[2]: Nothing 

[1]: DoNothing 
[2]: MakeSomething 
[3]: MakeSomethingElse 

私のRegExの知識は強くありませんが、これは何らかの方法で達成可能であることがわかっています。私の投稿は理解しやすいと思います。

深い角かっこの間のアクションを分離し、順序番号で置き換える必要があります。

+1

"シンプルな正規表現"は、 "無限のネスティング量"の要件を満たすものではありません。いいえ、返信したいものがあなたの入力と異なるため、あなたの質問は明確ではありません。実際のシナリオを提示してください。しかし、正規表現で数式を解析することは良い考えのようには聞こえません。 –

+0

@PetervanderHeijden:.NET正規表現はバランス構造をサポートしているため、その投稿は関連する重複理由ではありません。今、質問は不明確です。 –

+0

@WiktorStribiżew質問をより明確にするために編集を試みました。私は直接答えることができるので特に疑問はありますか?ありがとう – zombiechainsaw

答えて

0

簡単なパーサーを作成して解決しました。 RegExルートは価値がありません。

関連する問題