简单数学方程的正则表达式

我想识别整数或小数和四个简单的操作,分成标记我无法得到小数点,你能帮忙吗?

我的注册是

expression = "2.7 + 3 * (1 + 2)"; String expRegString = "\\d+(\\.\\d+)*|[\\(\\)\\+\\-\\*\\/]"; Pattern expPattern = Pattern.compile(expRegString); Matcher expMatcher = expPattern.matcher(expression); while (expMatcher.find()){ System.out.println(expMatcher.group()); } 

给我"+", "3", "(" , "1", "+" , "2",")"

编辑:正确的结果将是"2.7","+", "3", "(" , "1", "+" , "2",")"

您可以尝试删除所有空格,然后将数据拆分到字符之前或之后的每个位置- + * / ( )

这应该可以解决问题

 String expression = "2.7 + 3 * (1 + 2)"; String[] tokens = expression.replaceAll("\\s+", "").split("(?<=[-+*/()])|(?=[-+*/()])"); for (String token : tokens) System.out.println(token); 

产量

 2.7 + 3 * ( 1 + 2 ) 

它可能适合您:

 expression = "2.7 + 3 * (1 + 2)"; String expRegString = "\\d+(\\.\\d+)*|\\(\\d+(\\.\\d+)*[\\+\\-\\*\\/]\\d+(\\.\\d+)*\\)";