捕获组
捕获组是把多个字符当成一个单独的单元进行处理的方法。
这个方法是通过对括号里面的字符进行分组来进行创建的。
打个比方来说,正则表达式(dog)创建了单一分组,组里面是包含了”d”,”o”,”g”这三个东西的。
那么捕获组是什么意思呢,就是通过从左到右计算它的开括号来编号的。
这一点是比较难以理解的。
我们再举个例子,在表达式((A)(B(C)))当中,这里面是有四个下面的组的。
((A)(B(C)))
(A)
(B(C))
(C)
可以通过调用matcher对象的groupCount方法来查看表达式当中到底是有多少个分组的。
groupCount方法会返回一个int的值,就表示个数的。
表示的就是matcher对象当前有多个小组的。
另外,还有一个特殊的组(group(0)),这个意思是什么呢,它总是代表整个表达式的。
这个组不包括在groupCount的返回值当中的。
为了理解这个小知识点。
我们举个实际的例子
下面的例子说明如何从一个给定的字符串当中,找到数字串。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class regex3 {
public static void main( String args[] ){
// 按指定模式在字符串查找
String line = "This order was placed for QT3000! OK?";
String pattern = "(\\D*)(\\d+)(.*)";
// 创建 Pattern 对象
Pattern r = Pattern.compile(pattern);
// 现在创建 matcher 对象
Matcher m = r.matcher(line);
if (m.find( )) {
System.out.println(m.groupCount());
for (int i = 0; i <= m.groupCount(); i++) {
System.out.println("找到了:"+m.group(i));
}
} else {
System.out.println("什么都没有找到");
}
}
}
版权声明:本文为oneqinglong原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。