数学表达式的正则表达式

Bib*_*bhu 0 regex

我需要一个数学表达式的正则表达式,它应该满足我提出的这个SO问题中解释的以下条件。

这个表达式效果很好

但现在我需要添加对左括号和右括号以及先前条件的支持。这样我的正则表达式应该验证这些模式的表达式

例如。*6+(7-9)/6.25*(7-9.2)+6*6/(7.5-9)

我试图对现有的正则表达式进行修改,但没有成功实现。它还接受这些无效的模式*6+(7-9*6+7-9)因为数学表达式中可以出现单括号。

这是链接RegExr。请帮忙。

Ale*_*x D 5

@Bibhu,由于数学表达式可以任意嵌套,因此您需要一个实际的解析器来验证它们。正则表达式不起作用。正则表达式的功能不足以处理任意深度的递归嵌套。

如果将嵌套限制为最大级别,则可以编写一个(非常大且丑陋的)正则表达式来验证表达式。但从根本上来说,正则表达式并不是适合这项工作的工具。

如果您有一个已经知道如何使用的解析器生成器,那么这将是构建数学表达式解析器的最简单方法。如果不这样做,手动编写一个简单的自顶向下递归下降解析器仍然很容易。