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+)则表示的出现前面一个()里面的内容或者是出后面一个()里面的内容
以上是我对本次正则表达式用法的简单介绍,正则表达式的功能远远不止这些,其他的我目前不说明了。。