我正在使用正则表达式开发一个数学表达式解析器,并尝试添加对括号的支持。
我的解析器工作方式如下:
function parse_expression(expression){
Find parenthetical expressions
Loop through parenthetical expressions, call parse_expression() on all of them
Replace parenthetical expression with value of expression
Find value of expression
Return value
}
因为它是递归的,所以我需要找到最外层的括号表达式。例如,如果我正在解析字符串“(5 + (4 + (3 / 4) + (3 * 2) + 2)) + (1 + 2)”,我希望找到表达式“5 + (4 + (3 / 4) + (3 * 2) + 2)”和“1 + 2”。如何使用正则表达式实现这一点?
我现在有一个正则表达式(“\(([^\)]+)\)”),它只会返回“5 + (4 + (3 * 2”这样的结果,而不是完整的第一个表达式,并且没有得到第二个表达式。
有什么想法吗?
谢谢,
凯尔
(\([^()]+\))
,这也可以解决那个问题。但是,无论哪种方法对你来说都可以 :) 祝你好运解决剩下的问题,我想一个可用的正则表达式可能不足以解决这个问题。 - David Hedlund(1+5/2)
)。基本上唯一不能处理的事情是,如果你写2(1+2)
它就无法工作(正确的方式应该是 推断2*(1+2)
)。 - David Hedlund