Java中正则表达式相关类中Matcher.group()方法

##简介 最近在做一个项目,需要使用matcher.group()方法匹配出需要的内容。 ##分组 正则表达式 AA((A)(B(C)))

      group()方法是针对()来说的,group(0)指的是整个正则表达式,group(1)指的是第一个括号里的东西
      正则表达式分组 是从左至右计算其左括号有几个就可以分为几组。编号从1开始
      1   ((A)(B(C)))
      2    (A)
      3    (B(C))
      4     (C)           
package com.sightdown.download;

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

public class Test {
	public static void main(String[] args) {
		Pattern p = Pattern.compile("([a-z]+)(\\d+)");
		Matcher m = p.matcher("aaa2223bb");
		System.out.println(m.find()); // 匹配aaa2223
		System.out.println(m.groupCount()); // 返回2,因为有2组
		System.out.println(m.start(1)); // 返回0 返回第一组匹配到的子字符串在字符串中的索引号
		System.out.println(m.start(2)); // 返回3
		System.out.println(m.end(1)); // 返回3 返回第一组匹配到的子字符串的最后一个字符在字符串中的索引位置.
		System.out.println(m.end(2)); // 返回7
		System.out.println(m.group(1)); // 返回aaa,返回第一组匹配到的子字符串
		System.out.println(m.group(2)); // 返回2223,返回第二组匹配到的子字符串
	}
}

##总结 group()、start()、end()所带的参数i就是正则表达式中的第几个括号内的子表达式

正则表达式

 $      匹配字符串的结尾
 *       匹配前面的子表达式0次或多次
 +      匹配前面的子表达式1次或多次
?     匹配前面的子表达式0次或一次

转载于:https://my.oschina.net/u/1028135/blog/895145