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

正則表達式實戰速查:HTML 標簽匹配、屬性提取、註釋處理常用模式大全

     編輯:Java 綜合教學

正則表達式實戰速查:HTML/標記語言處理常用模式大全

正則表達式在 HTML/XML/標記語言解析中應用廣泛,但需注意正則不適合解析任意嵌套結構 (如任意深度嵌套標籤),複雜場景請使用專業解析器 (Jsoup, DOM, SAX)。以下為常見場景實用模式整理。

基礎標籤匹配

場景正則模式匹配示例說明
匹配成對標籤 (含內容)<(\S*?)[^>]*>.*?</\1><html>hello</html>, <a>abcd</a>反向引用 \1 確保首尾標籤一致,非貪婪 .*? 匹配內容
匹配自閉合標籤<.*? /\><br/>, <img src="x"/>以 /> 結尾
綜合匹配 (成對 + 自閉合)<(\S*?)[^>]*>.*?</\1>|<.*? /\>上述兩類均匹配或運算組合

屬性提取與驗證

場景正則模式匹配示例
提取 href 鏈接href=["'](https?://|/|\./)?\w+(\.\w+)*(/\w+(\.\w+)?)*(/?|\?\w*=\w*(&\w*=\w*)*)?["']href="https://example.com/path?k=v"
提取 src 圖片路徑 (jpg/png/gif/bmp)src[^>]*[^/]\.(?:jpg|bmp|gif|png)(?:["']|$)src="../img.jpg", src='https://cdn.com/x.png'
匹配標準屬性 key="value" 或 key='value'\w+\s*=\s*(["'])(.*?)\1class="container", id='main'
匹配 BBCode 標籤 [tag attr="val"]content[/tag]\[(\w+)\s*((\w+)=(['"]?)([^\]'"]*)\4)*\](.*?)\[/\1\][url="https://x.com"]Link[/url]

特殊內容處理

場景正則模式說明
HTML 註釾<!--.*?--> (單行) / (?s)<!--.*?--> (跨行)(?s) 讓 . 匹配換行符
多行註釋 (C/Java 風格)/\*[\d\D]*?\*/[\d\D] 匹配任意字符含換行
雙引號字符串 (支援轉義)"([^"\\]|\\.)*"匹配 "text \"quote\" end"
版權符號 ©\xA9 或 &copy;Unicode/實體編碼
JavaScript 事件屬性 (onXXX)(?i:on(blur|change|click|dblclick|focus|keypress|keydown|keyup|load|unload|mousedown|mouseup|mousemove|mouseover|mouseout|reset|select|submit))忽略大小寫匹配 onClick 等

輸入驗證常用模式

驗證目標正則模式說明
純英文字母 (大小寫)^[A-Za-z]+$至少一位
純大寫字母^[A-Z]+$
純小寫字母^[a-z]+$
字母數字組合^[A-Za-z0-9]+$
字母數字下劃線 (\\w)^\w+$等價 [A-Za-z0-9_]+
固定長度 (如 3 位)^.{3}$任意字符
拒絕特殊字符 (<>`~!/@#$%^&*()_+={}|[]\\:";'<>?,./)^[^<>`~!/@#$%^&*()_+={}|[\]\\:";'<>?,./]+$負向字符類

進階技巧與避坑指南

  • 貪婪 vs 非貪婪:.* 匹配盡可能多,.*? 匹配盡可能少。HTML 跨標籤匹配必須用非貪婪。
  • 邊界控制:使用 \b (單詞邊界)、^$ (行首尾)、(?=...) (正向預查)、(?!...) (負向預查) 精確定位。
  • 修飾符:(?i) 忽略大小寫,(?s) 單行模式 (. 匹配 \n),(?m) 多行模式 (^$ 匹配行首尾)。
  • 性能陷阱:避免嵌套量詞 (a+)+、過度回溯模式。長文本優先用 String.indexOf 定位大致區域再正則提取。
  • HTML 解析原則:能用解析器絕不用正則。正則僅適用於結構固定、已知格式的片段提取 (如模板變量替換、特定屬性抽取)。

常用工具推薦

  • 在線測試:regex101.com (支援 PCRE/JS/Python/Golang 語法高亮解釋)、regexr.com
  • IDE 內建:IntelliJ IDEA Ctrl+Alt+R / Eclipse Ctrl+Shift+R 正則測試視圖
  • 可視化:Regulex (regexper.com) 將正則轉為鐵路圖視覺化

黃金法則:正則表達式威力強大但「寫時只讀,改時淚流」。複雜模式務必添加註釋 ((?x) 模式支援空白註釋) 或拆分為多個簡單正則組合處理。

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