用于拆分数值表达式的java正则表达式
我需要拆分数值表达式。基础很简单,但是。。。我试过了
public static void main(String[] args) {
String [] a = {"1+1", "1-1", "22*43", "25/17", "-3 * -3"};
String [] z;
for(int i = 0; i < a.length; i++){
z = a[i].split("[\\D]");
System.out.println(i + ": " + a[i] + " |" + z[0] + "| " + "|" + z[1] + "|");
}
}
我得到:
0: 1+1 |1| |1|
1: 1-1 |1| |1|
2: 22*43 |22| |43|
3: 25/17 |25| |17|
4: -3 * -3 || |3|
问题是第4行:应该是:
4: -3 * -3 |-3| |-3|
有没有可能通过增强正则表达式来实现这一点
# 1 楼答案
这里的问题是
\D
也捕获-
符号一种解决方案是将表达式开头和运算符后面的
-
符号作为两种特殊情况处理更优雅的解决方案是实现语法。见http://lukaszwrobel.pl/blog/math-parser-part-2-grammar
# 2 楼答案
这一条应该适合你的需要,只要你不串联表达式:
# 3 楼答案
试试这个:
如果要使用递归来支持所有长度的表达式,请执行以下操作: