String.replaceAll(regex) が 2 回置換される理由
コード スニペット内:
System.out.println("test".replaceAll(".*", "a"));
正規表現.* は、ゼロ文字を含む任意の文字に一致します。これは、文字列全体と 2 回一致できることを意味します。
この動作は Java 正規表現エンジンのバグとはみなされません。代わりに、これは .* が任意の文字に一致する方法の結果です。
代替手段
この動作を回避するには、次の代替手段を使用できます:
"test".replaceFirst(".*", "a")
System.out.println("test".matches(".*")); // Prints true
System.out.println("test".replaceAll(".+", "a")); // Prints a
以上が\".*\" を使用すると String.replaceAll(regex) が 2 回置換されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。