Java replaceAll()方法报错Illegal group reference的解决办法
作者:java小强
这篇文章主要给大家介绍了关于Java replaceAll()方法报错Illegal group reference的解决办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
前言
replaceAll(regex, replacement)函数,由于第一个参数支持正则表达式,replacement中出现“$”,会按照$1$2的分组模式进行匹配。
当编译器发现“$”后跟的不是整数的时候,就会抛出“非法的组引用”的异常。
例如,如下代码会报错:
public class Test { public static void main(String[] args) { String str = "123ABC456"; String re = "#7T$/#"; System.out.println(str.replaceAll("ABC", re)); } }
报错内容:
Exception in thread "main" java.lang.IllegalArgumentException: Illegal group reference
at java.util.regex.Matcher.appendReplacement(Unknown Source)
at java.util.regex.Matcher.replaceAll(Unknown Source)
at java.lang.String.replaceAll(Unknown Source)
at cn.com.vogue.Test.main(Test.java:6)
解决办法:
一个是JDK提供的方法,对特殊字符进行处理:
对要替换的字符做处理代码如下:
re = java.util.regex.Matcher.quoteReplacement(re);
把特殊字符转为特定字符,然后交给接收方处理:
例如将$替换为{ZF4}},当然,如果是一家公司做还可以:
String[] strArr = ex.split("\\$"); StringBuffer sb = new StringBuffer(); for(int i=0;i<strArr.length-1;i++){ sb = sb.append(strArr[i]).append("{ZF4}"); } sb.append(strArr[strArr.length-1]); ex = sb.toString();
总结
到此这篇关于Java replaceAll()方法报错Illegal group reference的解决办法就介绍到这了,更多相关Java replaceAll()方法报错内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
- javascript中使用replaceAll()函数实现字符替换的方法
- Javascript中正则表达式的全局匹配模式分析
- Javascript中使用exec进行正则表达式全局匹配时的注意事项
- JavaScript实现的字符串replaceAll函数代码分享
- javascript实现全局匹配并替换的方法
- java中replaceAll替换圆括号实例代码
- Java中replace与replaceAll的区别与测试
- java字符串的替换replace、replaceAll、replaceFirst的区别说明
- String.replaceAll方法详析(正则妙用)
- 浅谈Java中replace与replaceAll区别
- Java中replace、replaceAll和replaceFirst函数的用法小结
- 浅谈java中replace()和replaceAll()的区别
- jQuery中replaceAll()方法用法实例
- js使用正则实现ReplaceAll全部替换的方法
- js字符串替换所有的指定字符或文字(推荐replaceAll方法)
- JS中实现replaceAll的方法(实例代码)
- js replace 与replaceall实例用法详解
- Flex 字符串ReplaceAll使用说明
- JavaScript中使用replace结合正则实现replaceAll的效果