首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java 正則表達式提取尖括號內容:從字符串中解析 <標籤> 格式數據

     編輯:程式設計綜合問答

需求場景

字符串 "<工作>fgdfg<學習>iop<生活>" 中需提取尖括號包裹的標籤:工作、學習、生活。

正則方案:零寬斷言


String text = "<工作>fgdfg<學習>iop<生活>";
// 正則:(?<=<).*?(?=>)
// 解析:(?<=<)  正向後顧斷言,匹配 < 後的位置
//       .*?      非貪婪匹配任意字符
//       (?=>)  正向先行斷言,匹配 > 前的位置
Pattern pattern = Pattern.compile("(?<=<).*?(?=>)");
Matcher matcher = pattern.matcher(text);

while (matcher.find()) {
    System.out.println(matcher.group()); 
    // 輸出:工作、學習、生活
}

替代方案:捕獲組


// 更直觀,性能略優
Pattern pattern = Pattern.compile("<(.*?)>");
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
    System.out.println(matcher.group(1)); // 組1為括號內容
}

邊界情況處理

輸入輸出說明
<a><b>a, b連續標籤
<a></b>a, /b包含斜杠
<>(空)空標籤匹配空串
無標籤文本(無)無匹配不報錯
<未閉合(無)需>結束

性能建議

  1. 預編譯 Pattern:靜態常量或單例複用,避免重複編譯
  2. 非貪婪匹配:.*? 防止跨標籤匹配
  3. 大數據量用 String.indexOf:簡單場景手動解析更快

擴展:HTML/XML 解析

若處理標準標記語言,**請使用專用解析器**(Jsoup, DOM, SAX),正則無法正確處理嵌套、屬性、註釋、CDATA 等複雜結構。

掌握零寬斷言與捕獲組兩種提取模式,靈活應對各類定界符提取需求。

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