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

Java 正則表達式 `<[^>]` 詳解:匹配非右尖括號字符

     編輯:程式設計綜合問答

正則分解

<[^>]
片段含義
`<`字面匹配左尖括號 `<`
`[^>]`字符類:匹配任意單個字符,除了 `>`

匹配示例

輸入: "
hello
" 匹配結果: 1. "' 3. "

常見誤解澄清

「為什麼匹配了 `>` 左邊的 `<` 和一個字符?」

因為 `[^>]` 不匹配 `>`,但會匹配 `<` 後面的下一個字符(只要不是 `>`)。所以:

    - `
    ` → 匹配 `` → 匹配 `` → 不匹配(`<` 後緊跟 `>`,`[^>]` 失敗)

    實際應用場景

    簡易 HTML 標簽提取(不推薦用正則解析 HTML)

    String html = "
    內容
    "; // 匹配標簽開頭部分 Pattern p = Pattern.compile("<[^>]"); Matcher m = p.matcher(html); while (m.find()) { System.out.println("位置 " + m.start() + ": " + m.group()); } // 輸出: 位置 0:

    更實用的標簽匹配

    // 匹配完整標簽(貪婪)
    "<[^>]*>"   // 
    ,
    // 匹配完整標簽(非貪婪,推薦) "<[^>]*?>" // 同樣效果,性能略好 // 匹配標簽名 "<\\s*([a-zA-Z][a-zA-Z0-9]*)" // 捕獲組1為標簽名

    字符類 `[^...]` 核心規則

    • `^` 在開頭表示取反(非這些字符)
    • `^` 在非開頭表示字面 `^` 字符
    • `]` 需轉義或放在開頭:`[]^]` 匹配 `]` 或 `^`
    • 範圍表示:`[a-z]`、`[0-9]`、`[^a-z]`

    總結

    `<[^>]` = 匹配 `<` 後跟任意非 `>` 字符。理解關鍵:`[^>]` 排除 `>`,不排除 `<`。解析 HTML 請用專用解析器,正則僅適合簡單提取。

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