2017-05-02 175 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路线不值得。