正则表达式捕获组
用括号()可以把一个正则表达式分成多个独立处理。
例如时间,格式:22:45:30
如果用一个正则表达式来匹配时间可以写成这样的表达式。
“([01][0-9]|2[0-3])😦[0-5][0-9])😦[0-5][0-9])”
在上面的表达式中每一个括号里面的内容都是一个捕获组,可通过Matcher类对象的groupCount方法来来获取一个表达式中有多少个分组。Matcher类对象的groupCount方法的返回值是一个整数表达数中分组的数量。整个正则表达示存在
group(0)
中,返回的分组数量不包括
group(0)
例如上面表示时间的正则表达式,我们可以利用捕获组把时间字符串中的小时,分钟和秒数提取出来。
public class TimeRegex {
public static void main(String[] args) {
TimeRegex timeRegex = new TimeRegex();
boolean b = timeRegex.timeAnalyse("23:45:48");
}
public boolean timeAnalyse(String str){
String regexStr = "([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])";
Pattern p = Pattern.compile(regexStr);
Matcher matcher = p.matcher(str);
if(matcher.find()){
for(int i = 1; i <= matcher.groupCount(); i++) {
System.out.println(matcher.group(i));
}
return true;
}else{
System.out.print("时间格式有误");
return false;
}
}
}
运行结果:
23
45
48