This question already has answers here:
Why does replaceAll fail with “illegal group reference”?
(8个答案)
2年前关闭。
我正在尝试按如下所示从restTemplate.exchange替换url中的参数。
抛出错误以下,
我希望结果字符串为
你能帮忙吗?
(8个答案)
2年前关闭。
我正在尝试按如下所示从restTemplate.exchange替换url中的参数。
String userKey = "$$maryann$$";
String resourceURL =
"http://api.qal1.net/v3/fis/1234/getCustomer/{value}"
resourceURL = resourceURL.replaceFirst("\\{" + "value" + "\\}", userKey);
抛出错误以下,
java.lang.IllegalArgumentException: Illegal group reference
at java.util.regex.Matcher.appendReplacement(Matcher.java:857)
at java.util.regex.Matcher.replaceFirst(Matcher.java:1004)
at java.lang.String.replaceFirst(String.java:2178)
我希望结果字符串为
http://api.qal1.net/v3/fis/1234/getCustomer/$$maryann$$
你能帮忙吗?
最佳答案
replaceFirst
使用正则表达式(regex)语法,其中$
是特殊符号:
在您要匹配的内容(目标)的描述中,它表示字符串的结尾,
在替换部分中,它可以用于访问第n个组(例如$n
)中的匹配项。
所以你需要逃脱它。您可以通过\$
手动进行操作(因为字符串"\\$"
在那里也很特殊,所以在字符串中看起来像\
一样),或者您可以使用可以对其进行转义的方法
str = str.replaceFirst(Pattern.quote(yourTarget), Matcher.quoteReplacement(yourReplacement);
关于java - String.replaceFirst不适用于带有$符号的参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48279707/
10-13 03:58