gpt4 book ai didi

java.util.regex.Matcher.replaceAll 替换不匹配?

转载 作者:行者123 更新时间:2023-11-30 09:51:41 26 4
gpt4 key购买 nike

根据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否

等于:假

  • 所以它不匹配,但仍在替换。我在这里缺少什么?

最佳答案

matches 如果整个字符串匹配则返回 true - 它不匹配子字符串。

所以如果 stringWithSingleSlash 只是 "\\" 而不是 "mabye\\no"匹配将返回 true。

如果 doubleSlash 匹配单个反斜杠这一事实让您感到困惑,解释是 "\\\\" 是一个带有两个反斜杠的字符串,正则表达式引擎解释两个反斜杠作为一个转义反斜杠(因为反斜杠是正则表达式和字符串文字中的转义字符)。

关于java.util.regex.Matcher.replaceAll 替换不匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4577128/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com