##簡介 最近在作一個項目,須要使用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次或一次