【发布时间】:2012-12-18 15:15:44
【问题描述】:
我写了这段代码:
public static void main(String args[]) throws Exception {
String template = "The user has spent amount in a day";
String pattern = "amount";
String output = template.replaceAll(pattern, "$ 100");
System.out.println(output);
}
这就是我运行它时发生的情况:
Exception in thread "main" java.lang.IllegalArgumentException: Illegal group reference
at java.util.regex.Matcher.appendReplacement(Matcher.java:713)
at java.util.regex.Matcher.replaceAll(Matcher.java:813)
at java.lang.String.replaceAll(String.java:2190)
at demo.BugDemo.main(BugDemo.java:16)
Java Result: 1
我正在从文件中读取数据。我应该转义文件数据中的所有$ 符号,还是这是一个不必要的过程?有没有其他类或库来处理这种情况?
在替换文本中(不是在正则表达式中)有一个特殊符号有什么问题?
注意事项:
我不想检查每个字符以进行转义。这就是我问这个问题的原因。
我使用的是 Java 6。
【问题讨论】:
-
试试
\\\$; $ 我相信是一个特殊的字符。 -
@Telthien:不是 Java 语言。就正则表达式而言,它是。这是你的意思吗? (您的评论不清楚。)
-
哦,是的,哎呀。将转义改为
\\\$ -
@Telthien:为什么要使用三个反斜杠?它不需要从 Java 的角度转义。
-
@Telthien 该问题询问模式何时涉及特殊字符,与我的问题完全不同。我的文字中有特殊字符。