public static void main(String[] args)
{
String str = "
String pat = "
Pattern p = Pattern.compile(pat);
Matcher m = p.matcher(str);
while (m.find())
{
for (int i = 0; i < m.groupCount() + 1; i++)
{
System.out.println(m.group(i));
}
System.out.println("====================");
}
}
输入的结果是:
aaa
bbbb
====================
aaa
bbbb
====================
aaa
bbbb
====================
aaa
bbbb
====================
根据我的软件测试,输出的结果是没有错的:
但是这里有一个需要注意的地方,仔细看代码里的for循环
for (int i = 0; i < m.groupCount()+ 1; i++)
没错,这里要+1。
因为groupCount方法的API说明如下:
返回此匹配器模式中的捕获组数。
根据惯例,零组表示整个模式。它不包括在此计数中。
任何小于等于此方法返回值的非负整数保证是此匹配器的有效组索引。
所以这里要+1,而且group(0)表示的是匹配到的整个文本,不要忘记了。
PS:这里在while循环执行完之前,好像是没法知道匹配了多少行的,如果有的话,请留言告诉我,谢谢。