0

我正在寻找使用正则表达式的数学公式验证。这是我正在使用的示例代码:-

 string equation = "(a+b)*10";

 bool b = false;

 Regex rx = new Regex(@"^((?<o1>[^-+*/()]+|\([^-+*/()]+\)|(?<p>\()+[^-+*/()]+|[^-+*/()]+(?<-p>\)))[-+*/])+(?<o2>[^-+*/()]+|\([^-+*/()]+\)|(?<p>\()+[^-+*/()]+|[^-+*/()]+(?<-p>\)))(?(p)(?!))$");

 if (rx.IsMatch(equation))
     {
      b = true;
     }

使用“(a+b)*100”这样的表达式可以正常工作。我的意思是,如果我错误地放置“(a+b))*100”或“(a+b*100”或“(a+b)*100)”之类的大括号,它正在做完美的验证。但是,如果要引入我的用户定义函数,例如“Sum(1,2)”或 Sqrt(8),则无法验证。

我希望这也可以验证我的功能。像“Sum(1,2)”、“Sum(1,2”、“Sum1,2)”、“Sum(1,2))”。我的意思是它应该注意正确使用牙套。

注意:- 我正在使用 ANTLR 来创建这些功能。

谢谢

4

1 回答 1

0

通用数学公式过于复杂,无法使用正则表达式进行解析。使用 ANTLR 编写可以解析出单个元素的语法。

于 2013-02-13T07:56:47.087 回答