一個 Java 正則表達式例子

今天在項目裏看到用 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

  • ((A)(B(C)))
  • (A)
  • (B(C))
  • (C)

因此, group 是正則表達式中捕獲組的意思,並非匹配了多少次。匹配屢次,須要繼續調用 match.find() 從上一次的位置繼續匹配。文檔

相關文章
相關標籤/搜索