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

Java 正則表達式入門完整指南:語法、標記、實戰範例大全

     編輯:Java 相關知識

基礎概念

正則表達式是模式匹配與替換的規範,由普通字符與元字符組成。JDK 1.4 引入 `java.util.regex` 套件提供完整支援。

核心語法速查表

轉義與預定義字符類

語法說明
`\\`反斜槓轉義
`\t` `\n` `\r`製表、換行、回車
`\d`數字 `[0-9]`
`\D`非數字 `[^0-9]`
`\s`空白字符 `[\t\n\x0B\f\r]`
`\S`非空白字符
`\w`單詞字符 `[a-zA-Z_0-9]`
`\W`非單詞字符
`\b` / `\B`單詞邊界 / 非單詞邊界

錨點與限定符

語法說明
`^`行首
`$`行尾
`.`任意單字符(除換行)
`*`0 次或多次
`+`1 次或多次
`?`0 次或 1 次
`{n}`恰好 n 次
`{n,}`至少 n 次
`{n,m}`n 到 m 次
`|`或關係

字符類與分組

  • `[a-z]`、`[A-Z]`、`[0-9]`:範圍
  • `[^a-z]`:排除範圍
  • `(pattern)`:捕獲組,可用 `group()` 提取

Pattern 編譯標記

實戰範例大全

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`、避免過度複雜表達式。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
標記常量說明
`(?i)`CASE_INSENSITIVE忽略大小寫
`(?m)`MULTILINE`^` `$` 匹配行首尾
`(?s)`DOTALL`.` 匹配含換行
`(?x)`COMMENTS忽略空白、支援註解
`(?u)`UNICODE_CASEUnicode 大小寫不敏感
`(?d)`UNIX_LINES僅 `\n` 視為行結束