gpt4 book ai didi

Java String.replaceAll 不替换美元

转载 作者:行者123 更新时间:2023-11-29 06:52:05 26 4
gpt4 key购买 nike

我想知道为什么只有 $ 抛出 java.lang.IllegalArgumentException: Illegal group reference 异常而不抛出任何其他特殊字符:

public static void main(String[] args) {
String s = "asdf ok done %test%";
String as=s.replaceAll("%test%", "$dsf");
System.out.println(as);
}

这可以通过在 $ 之前添加一个 \\ 来克服,但为什么只针对这个字符。

最佳答案

您可以在第一个参数中捕获组,并在第二个参数中使用它们表示“在此处插入您匹配的位”:

String as = s.replaceAll("hello (.*) (\\d*)", "goodbye $2 $1");

当您使用$ 时,正则表达式引擎认为您正试图引用这样的组。添加 \\ 对其进行转义,使其成为字面上的美元。

这在 Javadoc 中有描述:

Note that backslashes (\) and dollar signs ($) in the replacement string may cause the results to be different than if it were being treated as a literal replacement string; see Matcher.replaceAll. Use Matcher.escapeReplacement(java.lang.String)to suppress the special meaning of these characters, if desired.)

关于Java String.replaceAll 不替换美元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44649712/

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