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();
请您到ITEYE看我的原创:http://cuisuqiang.iteye.com
或支持我的个人博客,地址:http://www.javacui.com
相关推荐
主要给大家介绍了关于Java replaceAll()方法报错Illegal group reference的解决办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
相信会java的同学估计都用过replace、replaceAll、replaceFirst这三个函数,可是,我们真的懂他们吗?下面通过这篇文章大家再来好好学习学习下这几个函数。
JavaScript 中使用 replace 达到 replaceAll的效果,其实就用利用的正则的全局替换。
本文是对JS中实现replaceAll的方法进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助
主要介绍了Java中replace与replaceAll区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
replace和replaceAll是JAVA中常用的替换字符的方法,它们的区别是: 1)replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,说白了也是字符串); 2)...
今日给大家介绍一下java 日志的数据脱敏的实现方法,可以更好的保护数据的安全,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
主要给大家介绍了关于String.replaceAll方法,正则妙用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
Console.WriteLine(ms.ReplaceAll("hello world","l","*")); //输出”he**o wor*d" ArrayList list=ms.GetPosList("hello world","l"); foreach(int pos in list){ Console.WriteLine("" + pos); } //输出2,3,9
JS 没有提供replaceAll这样的方法。使用正则表可以达成Replace 的效果,感兴趣的朋友看看下面的示例
ReplaceAll 多文件文本批量替换工具 依赖.net framework2.0
本文实例讲述了jQuery中replaceAll()方法用法。分享给大家供大家参考。具体分析如下: 此方法用匹配元素去替换指定的内容。 replaceAll()方法的作用和replaceWith()方法是完全一样的。 语法结构: 代码如下:$...
数据结构 二叉树 替换子树replaceAll \***********************************************************************************************/
htmlStr =htmlStr.replaceAll("∀", "∀"); htmlStr =htmlStr.replaceAll("∂", "∂"); htmlStr =htmlStr.replaceAll("&exists;", "∃"); htmlStr =htmlStr.replaceAll("∅", "∅"); htmlStr...
主要介绍了java中replace()和replaceAll()的区别,两者都是常用的替换字符的方法,感兴趣的小伙伴们可以参考一下
如果不可用或不String.prototype.replaceAll调用其“ shim”方法对String.prototype.replaceAll进行填充。 该软件包实现了接口。 它在ES3支持的环境中工作,并符合。 最常见的用法: const assert = require ( '...
众所周知,在程序开发中,难免会遇到需要匹配、查找、替换、判断字符串的情况发生,而这些情况有时又比较复杂,如果用纯编码方式解决,往往会浪费程序员的时间及精力。因此,学习及使用正则表达式,便成了解决这一...
主要给大家介绍了关于Java正则表达式如何匹配特定html标签内的内容的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧