Java的正则表达式

1.      正则表达式

正则表达式是一种特殊的字符串,一个正则表达式定义了一种字符串格式,例如可以用一个字符串定义常见手机号的格式:常见手机号是以13、15或18开头的11位数字字符串.

1.1 正则表达式元字符的写法及含义

见下表

 

例如

 

		String regex = "\d\p{Upper}\p{Alnum}";%0-9 大写 数字或字母
		Scanner scanner = new Scanner(System.in);
		while(true){
			String s = scanner.next();
			if(s.matches(regex))
				System.out.println("匹配");
			else
				System.out.println("不匹配");
		}
输入及输出结果如下

1Aa
匹配
1A2
匹配
1A#
不匹配


1.2正则表达式中方括号[]的使用

方括号的含义如下表

 

例如

 

		String regex = "[b-d]";
		Scanner scanner = new Scanner(System.in);
		while(true){
			String s = scanner.next();
			if(s.matches(regex))
				System.out.println("匹配");
			else
				System.out.println("不匹配");
		}
输入及输出结果如下

a
不匹配
b
匹配
c
匹配
e
不匹配

 

1.3限定修饰符的用法

限定修饰符的用法如下表

 

例如

		String regex = "[b-d]{1,3}";
		Scanner scanner = new Scanner(System.in);
		while(true){
			String s = scanner.next();
			if(s.matches(regex))
				System.out.println("匹配");
			else
				System.out.println("不匹配");
		}
输入及输出结果如下

c
匹配
ca
不匹配
cb
匹配
cbd
匹配
cbbd
不匹配

 

2.      字符串的替换

字符串替换使用String类的方法s.replaceAll(String regex,String replacement).将字符串s中的所有的与regex相匹配的部分替换为replacement,regex可以为普通字符串或者正则表达式.

例如

		String s = new String("J.av.a大%法%好!!");
		String regex = "\p{Punct}";//标点符号
		System.out.println(s);
		System.out.println(s.replaceAll(regex, ""));//去掉所有表达点
运行结果如下
J.av.a大%法%好!!
Java大法好

 

3.      字符串的拆分

使用s.split(String regex)方法可以regex作为分隔符将s分割成几个部分.

例如

		String s = new String("在1840年以前的一年,1月20日是个好日子");
		String []word = s.split("\D+");//这里需要一个 + 号,提取数字的方法
		for(String w:word)
			System.out.print(w+" ");
		System.out.println();
运行结果如下
 1840 1 20 

原文地址:https://www.cnblogs.com/tensory/p/6590774.html