gpt4 book ai didi

Java 字符串正则表达式替换方法从替换中删除反斜杠

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:16:29 26 4
gpt4 key购买 nike

我刚刚浪费了 1 小时来跟踪我认为不正常的行为在 String 类中使用 replaceAll/replaceFirst

如果替换字符串中有反斜杠,那么它们将被删除更换。然后我读到你可以使用 Matcher.quoteReplacement(String) 来创建一个适当的替换字符串,但我的问题是为什么?我可以期待如果你不这样做,第一个参数应该使用 Patter.quote(String) 进行转义想要特殊含义,但我看不出有理由更改替换:(

是的 我将开始使用 replace(CharSequence,CharSequence),只是想知道为什么 :)

这是一个清楚地显示“奇怪”行为的示例:

public static void main(String[] args) {
String out = "\\\\test\\\\";
System.out.println(out);
String result = "a".replaceAll("a", out);
System.out.println(result);
}

注意第二行只有一个反斜杠,而不是像第一行那样有两个反斜杠

最佳答案

是的,确实需要将反斜杠作为 String#replaceAll 中的第一个参数进行双重转义。

原因:

这是因为您的替换字符串可以包含 back-references,例如 $1$2 等,甚至替换文本也会被处理通过底层 regex 引擎 因此需要与第一个参数一样进行双重转义,正如您也发现的那样。

关于Java 字符串正则表达式替换方法从替换中删除反斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19543471/

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