【发布时间】:2013-10-19 08:29:45
【问题描述】:
我正在研究这个正则表达式
((([(]?[-]?[0-9]*[.]?[0-9]+)+([\/\+\-\*])+)+([0-9]*[.]?[0-9]+[)]?)+[\+\-\*\/]?([0-9]*)*)+
我需要它来接受任何表达式,例如:(2+2*7)-4+2/(5-3)+2
我想避免这样的表达:(2+3)- or 2+2-(2+3
目标是从用户那里获取表达式并将其分解为标记,但在此之前我想检查输入的有效性。
【问题讨论】:
-
数学符号主要是上下文无关的语法,这(并非不可能,但)使用正则表达式非常难以实现。如果令牌与产品不匹配,为什么不直接抛出错误?
-
不要为此使用正则表达式。使用Expression Tree
-
所以基本上你想检查他们是否有正确数量的分隔符
()? -
@Qantas94Heavy 什么?这是不可能的!
标签: java regex math expression