我正在寻找使用正则表达式的数学公式验证。这是我正在使用的示例代码:-
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 来创建这些功能。
谢谢