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

Java 正則表達式提取/移除數字實戰:Pattern 與 Matcher 完整代碼範例

     編輯:Java 相關知識

1. 提取純數字 (移除非數字)

String input = "哈哈,13888889999";
String digitsOnly = input.replaceAll("[^0-9]", "");
System.out.println(digitsOnly); // 13888889999

// 等價 Pattern 寫法
Pattern p = Pattern.compile("[^0-9]");
Matcher m = p.matcher(input);
String result = m.replaceAll("");

2. 移除數字 (保留非數字)

String input = "張三 13599998888 000000";
String noDigits = input.replaceAll("\\d", "");
System.out.println(noDigits.trim()); // 張三

// 等價
Pattern p = Pattern.compile("\\d");
Matcher m = p.matcher(input);
String result = m.replaceAll("").trim();

3. 提取連續數字段 (保留分隔)

String input = "訂單2023001金額123.45元";
Pattern p = Pattern.compile("\\d+(\\.\\d+)?");
Matcher m = p.matcher(input);
while (m.find()) {
    System.out.println(m.group()); // 2023001, 123.45
}

4. 替換數字為固定標記

String masked = input.replaceAll("\\d", "*");
// 或保留長度
String maskedLen = input.replaceAll("\\d", m -> "*".repeat(m.group().length()));

5. 編譯複用 Pattern (高頻調用)

// 靜態常量編譯一次
private static final Pattern DIGIT_PATTERN = Pattern.compile("\\d");
private static final Pattern NON_DIGIT_PATTERN = Pattern.compile("[^0-9]");

public static String extractDigits(String s) {
    return NON_DIGIT_PATTERN.matcher(s).replaceAll("");
}

public static String removeDigits(String s) {
    return DIGIT_PATTERN.matcher(s).replaceAll("");
}

6. 正則元字符速查

符號含義
\d[0-9] 數字
\D[^0-9] 非數字
\w[a-zA-Z0-9_] 單詞字符
\W[^a-zA-Z0-9_]
\s空白字符
.任意字符 (除換行)
* + ?0或多 / 1或多 / 0或1
()捕獲組

7. 效能提示

  • String.replaceAll 內部每次編譯 Pattern,高頻請手動編譯複用。
  • 大量文本處理考慮 Matcher.find() 迭代而非 replaceAll。
  • 避免災難性回溯:慎用 (.*)、嵌套量詞,改用佔有優先 .*? 或原子組。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved