Java字符串:正则表达式

正则表达式定义了字符串模式,定义了字符串各种匹配规则,可以用来搜索,编辑和处理文本.

在java中,我们用Pattern类来操作正则表达式.

入门案例:

查看手机号是否符合规则 1开头,共11位数字

String s=”13345678899”;

String pat=”1\d{10}”;  //定义正则表达式
Pattern r = Pattern.compile(pat); // 创建 Pattern 对象
Matcher m = r.matcher(s);  // 现在创建 matcher 对象

boolean isMatch = m.matches(); //判断是否匹配正则表达式规则

注意:

1 正则表达式在定义的时候也是以字符串的形式;

2 普通字符串也可以作为正则表达式;

正则表达式由原子和元字符两部分构成。

原子表示匹配的具体内容,我们可以用普通字符串或者通用字符作为原子;

元字符表示匹配方式和规则;

 

常用原子(通用字符):

\w  匹配任意字母/数字/下划线

\d  匹配数字

    \s  匹配空白字符 

    \W  和小写 w 相反,匹配任意字母/数字/下划线以外的字符

    \D  匹配除了十进制数以外的值

    [0-9]  匹配一个0-9之间的数字

    [a-z]  匹配小写英文字母

    [A-Z]  匹配大写英文字母

   [\u4e00-\u9fa5]  匹配中文字符

注意:JAVA中正则表达式斜杠需要使用\\

package cn.xtnotes.u2;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class T18_zhengze {
	public static void main(String[] args) {
		String a="12345678910";
		String pat="1\\d{10}";   //正则表达式规则:1开头+10位数字
		Pattern p=Pattern.compile(pat); //获取pattern对象,传入正则表达式
		Matcher m=p.matcher(a);  //创建matcher,传入字符串
		System.out.println(m.matches());
	}
}

常用元字符:

 

. 匹配任意字符

{n} 前面的原子出现了 n 次

{n,} 前面的原子至少出现 n 次

{n,m} 前面的原子出现次数介于 n-m 之间

( ) 分组,可用来提取字符串内容

                String a="123456";
		String pat="\\d{5,}";   //正则表达式规则:原子个数至少出现5.也就是>=5
		Pattern p=Pattern.compile(pat); //获取pattern对象,传入正则表达式
		Matcher m=p.matcher(a);  //创建matcher,传入字符串
		System.out.println(m.matches());

Matcher 类的方法

String matcher.group()  //提取分组中的字符串

String matcher. replaceAll ()  //替换

package cn.xtnotes.u2;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class T18_zhengze {
	public static void main(String[] args) {
		String a="张三,电话:15953794424 ";
		String pat="(\\d{11})";   //正则表达式规则:11位数字
		Pattern p=Pattern.compile(pat); 
		Matcher m=p.matcher(a); 
		//System.out.println(m.find()); //寻找表达式规则(11位数字)是否存在
		//System.out.println(m.group());   //给正则表达式加括号分组,输出表达式内容
	}
}

运行结果

 

如果字符串中有多个电话号码怎么办?

package cn.xtnotes.u2;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class T18_zhengze {
	public static void main(String[] args) {
		String a="张三,电话:15953794424 爱好:15953654251 ";
		String pat="(\\d{11})";   //正则表达式规则:11位数字
		Pattern p=Pattern.compile(pat); 
		Matcher m=p.matcher(a); 
	while(m.find()) {
		System.out.println(m.group());
	}
	}
}

运行结果

阅读剩余
THE END