為什麼String.replaceAll(regex) 會取代兩次
程式碼片段中:
System.out.println("test".replaceAll(".*", "a"));
正則表達式.* 匹配任何字符,包括零個字符。這意味著它可以匹配整個字串兩次:
此行為不被視為 Java 正規表示式引擎中的錯誤。相反,它是 .* 匹配任何字元的方式的結果。
替代方案
要避免這種行為,您可以使用以下替代方案:
"test".replaceFirst(".*", "a")
System.out.println("test".matches(".*")); // Prints true
System.out.println("test".replaceAll(".+", "a")); // Prints a
以上是為什麼 String.replaceAll(regex) 使用 \".*\" 時會替換兩次?的詳細內容。更多資訊請關注PHP中文網其他相關文章!