| 標記 | 常量 | 說明 |
| `(?i)` | CASE_INSENSITIVE | 忽略大小寫 |
| `(?m)` | MULTILINE | `^` `$` 匹配行首尾 |
| `(?s)` | DOTALL | `.` 匹配含換行 |
| `(?x)` | COMMENTS | 忽略空白、支援註解 |
| `(?u)` | UNICODE_CASE | Unicode 大小寫不敏感 |
| `(?d)` | UNIX_LINES | 僅 `\n` 視為行結束 |
實戰範例大全
1. 字符串驗證
Pattern.compile("^Java.*").matcher("Java不是人").matches(); // true
2. 多條件分割
Pattern.compile("[, |]+").split("Java Hello World Java,Hello,,World|Sun");
3. 文字替換
// 首次替換
matcher.replaceFirst("Java");
// 全部替換
matcher.replaceAll("Java");
// 置換並構建新字符串
StringBuffer sb = new StringBuffer();
while (matcher.find()) matcher.appendReplacement(sb, "Java");
matcher.appendTail(sb);
4. Email 驗證
Pattern.compile("[\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+", Pattern.CASE_INSENSITIVE)
5. 移除 HTML 標籤
Pattern.compile("<.+?>", Pattern.DOTALL).matcher(html).replaceAll("")
6. 提取 HTML 屬性值
Pattern.compile("href=\"(.+?)\"").matcher(html); // group(1) 獲取值
7. 擷取 HTTP URL
Pattern.compile("(https://|https://){1}[\\w\\.\\-/:]+")
8. 佔位符替換
String str = "Java目前的發展史是由{0}年-{1}年";
String[][] map = {{"\\{0\\}", "1995"}, {"\\{1\\}", "2007"}};
// 遍歷替換...
9. 目錄文件正則過濾
File[] files = dir.listFiles(new FileFilter() {
public boolean accept(File f) {
return Pattern.compile(regex).matcher(f.getName()).matches();
}
});
效能提醒
正則功能強大,但解析執行較耗時。高頻調用場景建議預編譯 `Pattern`、複用 `Matcher`、避免過度複雜表達式。
- 上一篇文章: Java 正則表達式 group() 方法詳解:捕獲組提取實戰
- 下一篇文章: 打造 Tomcat 安全啟動帳號:最小權限原則實戰部署指南
Copyright ©
程式碼之家 All Rights Reserved