2017-05-02 284 views
0

我正在構建公式的解析器,我遇到了嵌套括號的問題,有沒有一個簡單的正則表達式來解決這種表達式考慮無限期的嵌套量?嵌套括號正則表達式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路線不值得。