为什么 String.replaceAll( ".*" , "REPLACEMENT" ) 在 Java 8 中会出现意外的行为?



Java 8的String.replaceAll(regexStr,replacementStr(在给定的正则表达式为".*"时不起作用。结果是replacementStr的两倍。例如:

String regexStr = ".*";
String replacementStr = "REPLACEMENT"
String initialStr = "hello";
String finalStr = initialStr.replaceAll(regexStr, replacementStr);
// Expected Result: finalStr == "REPLACEMENT"
// Actual Result: finalStr == "REPLACEMENTREPLACEMENT"

我知道当正则表达式为".*"时,replaceAll((并不完全有意义,但正则表达式不是硬编码的,可能是其他正则表达式字符串。为什么不起作用?这是Java 8中的一个错误吗?

// specify start and end of line
String regexStr = "^.*$";
String replacementStr = "REPLACEMENT"
String initialStr = "hello";
String finalStr = initialStr.replaceAll(regexStr, replacementStr);

最新更新