【问题标题】:Parse math expression using regular expression使用正则表达式解析数学表达式
【发布时间】:2015-07-20 17:07:35
【问题描述】:

我想用正则表达式解析一个数学表达式。 例如,表达式“-4-2-1”被解析为“-4”、“-”、“2”、“-”和“1”。但是,从我的正则表达式中,我只能得到“-”、“4”、“-”、“2”、“-”、“1”

这是我的正则表达式^-?\d*\.{0,1}\d+$|[+-×÷^√∛!πe%]

【问题讨论】:

  • 也许发布你的正则表达式?
  • 祝你好运。除非您将自己限制在非常简单的方程式中,否则您无法编写可以处理所有方程式的正则表达式。
  • 现在你可以试试(^-)?\\d*\\.?\\d+|[+\\-×÷^√∛!πe%]
  • 它就像一个魅力,非常感谢。
  • 使用堆栈而不是正则表达式并手动执行:)

标签: java regex parsing


【解决方案1】:

您不能为所有类型的方程式创建正则表达式,但对于您的情况,您可以通过

改进您的正则表达式
  • ^- 部分设为可选,
  • 在你的字符类中转义-(否则它将被视为范围运算符)

顺便说一句,{0,1} 可以替换为?

所以试试"(^-)?\\d*\\.?\\d+|[+\\-×÷^√∛!πe%]"

【讨论】: