根据javadoc:
用给定的替换字符串替换与模式匹配的输入序列的每个子序列。
这似乎表明此调用不会替换,除非进行匹配。
但是:
public class MisMatch {
public static void main(String args[]){
Pattern doubleSlash = Pattern.compile("\\\\");
String stringWithSingleSlash = "maybe\\no";
System.out.println("Matches:"+doubleSlash.matcher(stringWithSingleSlash).matches());
String replace = doubleSlash.matcher(stringWithSingleSlash).replaceAll("ABC");
System.out.println(replace);
System.out.println("Equal:"+(stringWithSingleSlash.equals(replace)));
}
}
这打印:
匹配:假
也许ABC没有
等于:假
- 所以它不匹配,但仍在替换。我在这里想念什么?