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

Java 正則表達式實戰:從 HTML 標籤提取屬性值

     編輯:Java 相關知識

實際需求

解析網頁原始碼,提取表單元素的 id 屬性值。例如從 <input type='text' id='baijinshan' name='baijinshan' > 中提取 baijinshan。

核心代碼

package cn.bai.test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexTest {
    public static void main(String[] args) {
        String html = "<input type='text' id='baijinshan' name='baijinshan' >";
        // 正則:look-behind 斷言 id=' 開頭,look-ahead 斷言 ' name 結尾
        String regex = "(?<=id=')[\\s\\S]+?(?=' name)";
        Pattern p = Pattern.compile(regex);
        Matcher m = p.matcher(html);
        if (m.find()) {
            System.out.println("提取的 id: " + m.group()); // 輸出: baijinshan
        }
    }
}

正則表達式拆解

片段含義
(?<=id=')正向後顧斷言:匹配位置前必須是 id=',不消耗字符
[\\s\\S]+?非貪婪匹配任意字符(含換行),. 不匹配換行,故用 [\\s\\S]
(?=' name)正向前瞻斷言:匹配位置後必須是 ' name,不消耗字符

關鍵 API 用法

  • Pattern.compile(regex):編譯正則為模式物件(可重用,執行緒安全)。
  • matcher(input):建立匹配器,綁定輸入字串。
  • find():尋找下一個匹配子串,返回 boolean。
  • group():返回整個匹配內容;group(n) 返回第 n 組捕獲組。

進階提示

  • 真實 HTML 解析建議使用 Jsoup 等專用解析器,正則處理巢狀、跨行、屬性順序不固定等情況極易出錯。
  • 若需提取多個屬性,可用 while (m.find()) 迭代。
  • Java 9+ 支援 Matcher.results() 串流式處理。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved