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

Java 正則表達式提取括號內容:零寬斷言實戰

     編輯:Java 程式設計入門

場景

前台傳入格式如 教師10(0010),需批量提取括號內的純數字 0010(不含括號)。

正則方案:零寬正向斷言

Pattern pattern = Pattern.compile("(?<=\\()(.+?)(?=\\))");
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
    System.out.println(matcher.group()); // 輸出 0010
}

表達式拆解

  • (?<=\\():**零寬正向後顧斷言**,斷言左側必須是 (,但不消耗字符。
  • (.+?):非貪婪匹配任意字符(捕獲組 1),即目標內容。
  • (?=\\)):**零寬正向先行斷言**,斷言右側必須是 ),不消耗字符。

結果:matcher.group() 直接得到不帶括號的內容。

完整工具方法

public List<String> extractBracketContent(String input) {
    List<String> result = new ArrayList<>();
    Pattern p = Pattern.compile("(?<=\\()(.+?)(?=\\))");
    Matcher m = p.matcher(input);
    while (m.find()) result.add(m.group());
    return result;
}

零寬斷言速查表

語法名稱含義
(?=exp)正向先行斷言匹配 exp 前面的位置
(?<=exp)正向後顧斷言匹配 exp 後面的位置
(?!exp)負向先行斷言匹配後面不是 exp 的位置
(?<!exp)負向後顧斷言匹配前面不是 exp 的位置

圖示驗證

RegexBuddy 驗證截圖

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved