<[^>]
| 片段 | 含義 |
|---|---|
| `<` | 字面匹配左尖括號 `<` |
| `[^>]` | 字符類:匹配任意單個字符,除了 `>` |
輸入: "hello"
匹配結果:
1. "'
3. "
「為什麼匹配了 `>` 左邊的 `<` 和一個字符?」
因為 `[^>]` 不匹配 `>`,但會匹配 `<` 後面的下一個字符(只要不是 `>`)。所以:
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為標簽名
`<[^>]` = 匹配 `<` 後跟任意非 `>` 字符。理解關鍵:`[^>]` 排除 `>`,不排除 `<`。解析 HTML 請用專用解析器,正則僅適合簡單提取。