今天在項目裏看到用 Python 正則表達式的時候,用到 group,沒有仔細看。正好學習 Java 正則表達式,對 group 多留意了一下。java
上代碼:正則表達式
import java.util.regex.*; class RegexExample2{ public static void main(String[] args) { String content = " /udisk/123 /udisk/1 /udisk/2"; String pattern = "\\s(/udisk/[1-9]*)"; Pattern r = Pattern.compile(pattern); Matcher m = r.matcher(content); while(m.find()) { System.out.println("Find subString group(0): " + m.group(0)); System.out.println("Find subString group(1): " + m.group(1)); System.out.println("======================="); } } }
打印:學習
Find subString group(0): /udisk/123 Find subString group(1): /udisk/123 ======================= Find subString group(0): /udisk/1 Find subString group(1): /udisk/1 ======================= Find subString group(0): /udisk/2 Find subString group(1): /udisk/2 =======================
這裏有兩個 group: 「空格/udisk/*」 和 「/udisk/*」。肯定兩個,是由於我先調用了 groupCount() 來打印有 group 的個數。spa
因此,很明顯 group(0) 是整個表達式,而 group(1) 就是咱們用括號括起來的部分。code
某文檔寫道,捕獲組是經過從左至右計算其開括號來編號。例如,在表達式((A)(B(C))),有四個這樣的組:blog
因此, group 是正則表達式中捕獲組的意思,並非匹配了多少次。匹配屢次,須要繼續調用 match.find() 從上一次的位置繼續匹配。文檔