前言
利用正则表达式匹配算术表达式中的数字,正负均可提取。
临时抱佛脚写的,如果有更好的办法,你会告诉我的对吧?
算术表达式
String expression = "-40+(-6-4)+-2-91";
正则表达式
//断言数字左边为符号,符号-会出现0次或1次,再出现数字至少一次的数字
//或者
//以符号-开头,后面是数字
String reg = "((?<=\\(|-|\\+|/|\\*)-?\\d+)|(^-[0-9]+)";
运行
Pattern p = Pattern.compile(reg);
Matcher m = p.matcher(expression);
while (m.find()) {
System.out.println(m.group());
}
结果
-40
-6
4
-2
91
参考链接
http://blog.csdn.net/lcore/article/details/8744392
整体代码
public static void main(String[] args) {
String expression = "-40+(-6-4)+-2-91";
//断言数字左边为符号,符号-会出现0次或1次,再出现数字至少一次的数字
//或者以符号-开头,后面是数字
String reg = "((?<=\\(|-|\\+|/|\\*)-?\\d+)|(^-[0-9]+)";
Pattern p = Pattern.compile(reg);
Matcher m = p.matcher(expression);
while (m.find()) {
System.out.println(m.group());
}
}