##简介 最近在作一个项目,须要使用matcher.group()方法匹配出须要的内容。 ##分组 正则表达式 AA((A)(B(C)))java
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次或一次