直接上代码
public static void main(String[] args) throws Exception {
String src = "亲爱的,#nickname#,xxxxxxxxxxxxxx!";
String name = "$为时#~已晚";
String first = RegExUtils.replaceAll(src, "#nickname#", name);
System.out.println(first);
}
运行之后报错
java.lang.IllegalArgumentException: Illegal group reference
报错原因:
字符串中出现“$”,会按照$1$2的分组模式进行匹配。
当“$”后跟的不是整数的时候就会抛出“Illegal group reference”的异常
处理办法:
用JDK提供的方法,对特殊字符进行处理
public static void main(String[] args) throws Exception {
String src = "亲爱的,#nickname#,xxxxxxxxxxxxxx!";
String name = "$为时#~已晚";
name = java.util.regex.Matcher.quoteReplacement(name);
String first = RegExUtils.replaceAll(src, "#nickname#", name);
System.out.println(first);
}
运行后结果正常:
后续操作:
百度搜索一批特殊符号,字符。。。。
测试后发现只有在处理字符串中存在$时 会报错
本来是打算用正则表达式匹配特殊字符的
结果只有$符 会报错
用String.contains("$") 判断是否存在
if(String.contains("$") ){
name = java.util.regex.Matcher.quoteReplacement(name);
}
在执行后续操作也可以