Java如何计算捕获组的数量?
捕获组通过从左到右计数开括号来编号。要找出表达式中有多少个组,请在对象groupCount()上调用方法matcher。该groupCount()方法返回一个int显示匹配器模式中存在的捕获组数的。
package org.nhooo.example.regex; import java.util.regex.Matcher; import java.util.regex.Pattern; public class CountingGroupDemo { public static void main(String[] args) { //定义正则表达式以查找单词“quick”或“lazy”或“dog” String regex = "(quick)|(lazy)|(dog)"; String text = "the quick brown fox jumps over the lazy dog"; //获取所需的匹配器 Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(text); int groupCount = matcher.groupCount(); System.out.println("Number of group = " + groupCount); //查找每个匹配并打印 while (matcher.find()) { for (int i = 0; i <= groupCount; i++) { //第一组 System.out.println("Group " + i + ": " + matcher.group(i)); } } } }
程序的结果:
Number of group = 3 Group 0: quick Group 1: quick Group 2: null Group 3: null Group 0: lazy Group 1: null Group 2: lazy Group 3: null Group 0: dog Group 1: null Group 2: null Group 3: dog