JAVA的正则表达式检验四则运算的表达式是否正确
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Firstwork {
public static void main(String[] agrs){
Scanner input = new Scanner(System.in);
System.out.println("plese input a expression:");
for (int i = 0; i < 5; i++) {//一次性验证五次四则运算表达式
String expression = input.next();
System.out.println(expression);
**// String re2 = "(\\(-[1-9]\\d*\\)|-[1-9]\\d*|[1-9]\\d*)([+-/\\*](\\(-[1-9]\\d*\\)|[1-9]\\d*|\\(-0\\)|0))*";//方法一
//String re = "((\\(-\\d+\\))|(\\d+)|(-\\d+))(([\\+\\-\\*/]\\(-\\d+\\))|([\\+\\-\\*/]\\d+))+";
//验证四则运算表达式的正则表达式
String re = "(−\\d+)|(\\d+)|(-\\d+))((\\d+)|([\\+\\-\\*\\/]\\d+))+";//方法二**
if (expression.matches(re)) {
System.out.println("ok");//表达式正确
} else {
System.out.println("nononono");//表达式错误
}
}
}
} 
//String re = "((\(-\d+\))|(\d+)|(-\d+))(([\+\-\/]\(-\d+\))|([\+\-\/]\d+))+";
下面我来说明一下正则表达式的用法(以上面那个为例子):
1.\d 表示的是0-9的数字
2.\d+表示0-9的数字至少出现一次
3.\d*表示0-9的数字出现0次以上
4.[]里面的东西至少出现一个,两个\是转义
5.|这个表示或者的意思,例如(\(-\d+\))|(\d+)则表示的出现前面一个()里面的内容或者是出后面一个()里面的内容
以上是我对本次正则表达式用法的简单介绍,正则表达式的功能远远不止这些,其他的我目前不说明了。。
