首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 正則表達式 group() 方法詳解:捕獲組提取實戰

     編輯:Java 相關知識

核心概念

Java 正則表達式中,`group()` 方法用於提取匹配的子串。括號 `()` 定義捕獲組,`group(0)` 或 `group()` 代表整個匹配,`group(1)` 代表第一個括號內匹配內容,以此類推。

完整代碼範例

public static void main(String[] args) {
    Pattern p = Pattern.compile("(file://\\d+,)(/\\d+)");
    String s = "123,456-34,345";
    Matcher m = p.matcher(s);
    while (m.find()) {
        System.out.println("m.group(): " + m.group());     // 整個匹配
        System.out.println("m.group(1): " + m.group(1));   // 第一組
        System.out.println("m.group(2): " + m.group(2));   // 第二組
        System.out.println();
    }
    System.out.println("捕獲個數: groupCount()=" + m.groupCount());
}

執行結果解析

m.group(): 123,456
m.group(1): 123,
m.group(2): 456

m.group(): 34,345
m.group(1): 34,
m.group(2): 345

捕獲個數: groupCount()=2

關鍵注意事項

  • 必須先調用 `m.find()` 再調用 `group()`,否則編譯錯誤
  • `groupCount()` 返回捕獲組數量(不含 group 0)
  • 每次 `find()` 推進到下一個匹配,後續 `group()` 返回該匹配的捕獲組

實務應用場景

  • URL 解析:提取協議、域名、路徑、參數
  • 日誌分析:提取時間戳、錯誤代碼、堆疊追蹤
  • 資料清洗:從半結構化文本提取結構化欄位
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved