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

Java String.replaceAll 正則陷阱:方括號 [] 為特殊字元需轉義

     編輯:程式設計綜合問答

問題程式碼

String s = "XXXX[#111]YYY[#111]";
s = s.replaceAll("[#111]", "555"); // 預期替換 [#111],實際輸出錯誤

原因

replaceAll 參數是 **正則表達式**。[] 在正則中代表「字元類別」,[#111] 被解析為「匹配單一字元:# 或 1」,導致所有 # 和 1 都被替換。

正確寫法:轉義方括號

s = s.replaceAll("\\[#111\\]", "555"); // 輸出:XXXX555YYY555

或使用 Pattern.quote 自動轉義:

s = s.replaceAll(Pattern.quote("[#111]"), "555");

補充:replace vs replaceAll

  • replace(CharSequence, CharSequence):**字面字串替換**,不支援正則,效能較好,適合固定子串替換。
  • replaceAll(String regex, String replacement):**正則替換**,功能強大但需注意特殊字元轉義。
  • replaceFirst(String regex, String replacement):僅替換第一個匹配。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved