即你怎么做?
String string = "Sample string with ${title} to be inserted.";
string.replaceAll("${title}", title);
以下所有情况都会导致错误:
string.replaceAll("\\${title}", title);
string.replaceAll("\\\\${title}", title);
string.replaceAll("\\\\$\\{title\\}", title);
而且,似乎没有任何效果,这一切都会导致如下错误:
java.util.regex.PatternSyntaxException: Illegal repetition near index 4 \\$\\{title\\}
at java.util.regex.Pattern.error(Pattern.java:1713)
at java.util.regex.Pattern.closure(Pattern.java:2775)
at java.util.regex.Pattern.sequence(Pattern.java:1889)
at java.util.regex.Pattern.expr(Pattern.java:1752)
答案 0 :(得分:23)
Pattern类有一个转义功能,可以像这样使用
string.replaceAll(Pattern.quote("${title}"), title);
答案 1 :(得分:15)
不确定最后一个会如何导致错误;它只是不匹配任何东西,因为你在$
上使用了太多的反斜杠。
这应该有效:
string.replaceAll("\\$\\{title\\}", title);
答案 2 :(得分:6)
您可以将搜索字符串转义为\Q${title}\E
答案 3 :(得分:1)
这听起来像是模板语言的典型用例,例如FreeMarker。
答案 4 :(得分:0)
\$\{title\}
的 的
答案 5 :(得分:0)
在正则表达式中,转义字符为\
,我们必须在\\
中编写String
,\
用作转义字符。
例如str = str.replaceAll("rot\\*speed", "rotorspeed");
rot*speed
将替换为rotorspeed
。