Matcher

使用Matcher类,最重要的一个概念必须清楚:组(Group),在正则表达式中 ()定义了一个组,由于一个正则表达式可以包含很多的组,所以下面先说说怎么划分组的, 以及这些组和组的下标怎么对应的. 

下面我们看看一个小例子,来说明这个问题 

\w(\d\d)(\w+)

这个正则表达式有三个组: 
整个\w(\d\d)(\w+) 是第0组 group(0) 
(\d\d)是第1组 group(1) 
(\w+)是第2组 group(2) 

   我们看看和正则表达式匹配的一个字符串x99SuperJava, 
group(0)是匹配整个表达式的字符串的那部分x99SuperJava 
group(1)是第1组(\d\d)匹配的部分:99 

group(2)是第二组(\w+)匹配的那部分SuperJava


下面我们写一个程序来验证一下: 

package edu.jlu.fuliang;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexTest {

	public static void main(String[] args) {

		String regex = "\\w(\\d\\d)(\\w+)";
		String candidate = "x99SuperJava";
		
		Pattern p = Pattern.compile(regex);
		Matcher matcher = p.matcher(candidate);

		if(matcher.find()){
			int gc = matcher.groupCount();
			for(int i = 0; i <= gc; i++)
				System.out.println("group " + i + " :" + matcher.group(i));
		}

	}

}
                  
输出结果: 

引用
group 099SuperJava 
group 1 :99 
group 2 :SuperJava


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值