Pattern类,Matcher类

        在进行正则匹配时,"正则字符串"会被编译成Pattern对象保存在内存中,以"待匹配字符串"作为参数通过Pattern对象创建出Matcher对象,然后对匹配结果做针对性操作

1 Pattern类

java.util.regex.Pattern
方法名说明
静态 compile("regex")将"正则字符串"编译成Pattern对象
matcher("str")使用Pattern对象创建Matcher对象
split("str")对str按照regex分隔,返回String[ ]
静态 matcher("regex","str")对整串字符串的校验
Pattern pattern = Pattern.compile("\\d*");
Matcher matcher1 = pattern.matcher("abc456");
Matcher matcher2 = pattern.matcher("123456");
Arrays.toString(pattern.split("12ab33db56cf"));  //返回[, ab, db, cf]

如果一个Pattern对象只用一次,则可以使用Pattern的静态方法matchs( )   String类的matchs( )方法本质就是调用Pattern类的matchs( )方法

boolean flag = Pattern.matches("\\d*", "123456");

2 Matcher类

java.util.regex.Matcher
方法名说明
matchers( )整个字符串与regex是否匹配,返回boolean
lookingAt( )字符串前面部分与regex是否匹配,返回boolean
find( )字符串继续往后匹配,是否还有满足regex的子串,返回boolean
groupCount( )返回regex表达式中捕获组个数
group(int) / group(nama)返回上一次find( )匹配过的子串的捕获组,无参默认0
start( )返回上一次find( )匹配过的子串的开始索引
end( )返回上一次find( )匹配过的子串的结束索引+1
replaceFirst(replacement)用replacement替换第一次匹配的内容
replaceAll(replacement)用replacement替换所有匹配中的内容

2.1 matchers( )和 lookingAt( )

Pattern pattern = Pattern.compile("\\d+");
Matcher matcher = pattern.matcher("123abc");
matcher.matches();  //返回false
matcher.lookingAt();  //返回true

2.2 find( ),groupCount( )和group( )

Pattern pattern = Pattern.compile("(\\d{3})-(\\d{7})");
Matcher mc = pattern.matcher("728-4765164  520-7758258");
while (mc.find()) {
	System.out.println("分组的个数有:" + mc.groupCount());
	for (int i = 0; i <= mc.groupCount(); i++) {
		System.out.println("第" + i + "个分组为:" + mc.group(i));
	}
}

//分组的个数有:2
//第0个分组为:728-4765164
//第1个分组为:728
//第2个分组为:4765164

//分组的个数有:2
//第0个分组为:520-7758258
//第1个分组为:520
//第2个分组为:7758258

2.3 start( )和end( )

Pattern pattern = Pattern.compile("[a-z]+");
Matcher matcher = pattern.matcher("123abc456def789");
while (matcher.find()) {
	System.out.println("匹配子串" + matcher.group() + "开始于" + matcher.start() + "结束于" + matcher.end());
    //匹配子串abc开始于3结束于6
    //匹配子串def开始于9结束于12
}

 2.4 replaceFirst( )和replaceAll( )

Pattern pattern = Pattern.compile("\\d+");
Matcher matcher = pattern.matcher("12ab33db56cf");
matcher.replaceFirst("换");  //换ab33db56cf
matcher.replaceAll("换");  //换ab换db换cf
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值