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()方法报错内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
浅谈Java中replace与replaceAll区别
看门见山 1.java中replace API: replace(char oldChar, char newChar):寓意为:返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的. replace(CharSequence target, CharSequence replacement):寓意为:使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串. replaceAll(String regex, String replacem
-
浅谈java中replace()和replaceAll()的区别
replace和replaceAll是JAVA中常用的替换字符的方法,它们的区别是: 1)replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,说白了也就是字符串): 2)replaceAll的参数是regex,即基于规则表达式的替换,比如,可以通过replaceAll("\\d", "*")把一个字符串所有的数字字符都换成星号; 相同点:都是全部替换,即把源字符串中的某一字符
-
Java中replace、replaceAll和replaceFirst函数的用法小结
首先概述一下他们三个的用法: · replace(CharSequence target, CharSequence replacement) ,用replacement替换所有的target,两个参数都是字符串. · replaceAll(String regex, String replacement) ,用replacement替换所有的regex匹配项,regex很明显是个正则表达式,replacement是字符串. · replaceFirst(String regex, String
-
Java replaceAll()方法报错Illegal group reference的解决办法
前言 replaceAll(regex, replacement)函数,由于第一个参数支持正则表达式,replacement中出现"$",会按照$1$2的分组模式进行匹配. 当编译器发现"$"后跟的不是整数的时候,就会抛出"非法的组引用"的异常. 例如,如下代码会报错: public class Test { public static void main(String[] args) { String str = "123ABC456
-
spring在service层的方法报错事务不会回滚的解决
目录 spring在service层方法报错事务不会回滚 解决方法 service手动回滚问题 spring在service层方法报错事务不会回滚 @Transactional(rollbackFor = {Exception.class}) public void insertData() throws Exception { // 业务代码1 business1(); // 业务代码2 business2(); // 业务代码3
-
vue watch内部调用methods方法报错的解决方案
目录 watch内部调用methods方法报错 例子 错误原因 理解methods,computed,watch的调用时机 1.methods中定义的函数 2.computed中定义的函数 3.watch中定义的方法 watch内部调用methods方法报错 错误例子还原 例子 <script> export default{ data(){ return { data: 1, } }, watch: { data: (newV, oldV) => { this.printf() //
-
vue父组件调用子组件方法报错问题及解决
目录 vue父组件调用子组件方法报错 vue父组件调用子组件方法及遇到的问题 vue父组件调用子组件方法报错 在父组件定义了一个tab标签页,每一个标签页下面都调用不同的组件, 如下图所示: 子组件中定义的方法: setup() { const getList = () =>{ const date = moment(new Date()).format('YYYY-MM') loading.value = true apiGetPageList({ salaryDate: date, page
-
shell脚本报错:"[: =: unary operator expected"解决办法
shell脚本报错:"[: =: unary operator expected"解决办法 在匹配字符串相等时,我用了类似这样的语句: if [ $STATUS == "OK" ]; then echo "OK" fi 在运行时出现了 [: =: unary operator expected 的错误,就一直找不到原因,尝试了删除等号两侧的空格和括号里的空格都不管用,最后baidu了一下,才找到原因.把语句改成这样就不会出错了. if [[ $S
-
java.lang.NoSuchMethodException: com.sun.proxy.$Proxy58.list错误解决办法
java.lang.NoSuchMethodException: com.sun.proxy.$Proxy58.list错误解决办法 玩web的SSH总会有些令你意想不到的exception,这里其中有很多事自己不小心,或者马虎所造成.因此,解决的方案会各有不同,别人出现的异常解决方案对你的可能无效,就像上面的我报的异常一样,百度了很多很多次,给我的答案无非就是在aop上加上一句,但是非常抱歉,我加上去无效!所以还是那句话,对于自己的异常,还是要自己解决. 首先说明一下,我这次的练习的ssh结构
-
关于获取DIV内部内容报错的原因分析及解决办法
1.错误描述 2.错误原因 由于向div中添加元素,利用append(); $("#divStyle").append("<div><label>_data[i].name</label></div>"); append里面是动态数据,当请求数据为空时,获取并判断div中的内容: var divContent = $("#divStyle").html(); if(divContent == nul
-
java中Servlet Cookie取不到值原因解决办法
java中Servlet Cookie取不到值原因解决办法 现象: 在测试带Cookie的HTTP请求时发现,服务端用request.getHeader("cookie")可以去到值; 但是用request.getCookies()却不行 Cookie mycookies[] = request.getCookies(); 中永远获取不到uid的值:(80端口号除外) 原因: 查了浏览器的具体cookie值,发现 http://localhost:8080/ 访问的时候,cookie值
-
shell脚本报错:"[: =: unary operator expected"解决办法
shell脚本报错:"[: =: unary operator expected"解决办法 在匹配字符串相等时,我用了类似这样的语句: if [ $STATUS == "OK" ]; then echo "OK" fi 在运行时出现了 [: =: unary operator expected 的错误,就一直找不到原因,尝试了删除等号两侧的空格和括号里的空格都不管用,最后baidu了一下,才找到原因.把语句改成这样就不会出错了. if [[ $S
-
Pycharm虚拟环境pip时报错:no suchoption:--bulid-dir的解决办法
目录 创作背景 讲解 解决办法 注 结尾 创作背景 最近本人在 PyCharm 的虚拟环境安装第三方库的时候报了错,说 no such option: --bulid-dir ,如下图所示: 这是怎么回事呢? 讲解 PyCharm 依赖于 --build-dir 安装第三方库,但该标志在 20.2 版本以后的版中已被删除. 解决办法 命令行中切换到虚拟环境的路径,并使用 activate 切换为虚拟环境.输入命令 python -m pip install pip==20.2.4 来切换 pip
随机推荐
- AngularJS的Filter的示例详解
- 第2天:什么是名字空间
- PHP中4个加速、缓存扩展的区别和选用建议
- 测试、预发布后用python检测网页是否有日常链接
- 关于iOS导航栏返回按钮问题的解决方法
- 使用TinyButStrong模板引擎来做WEB开发
- C/C++数据对齐详细解析
- Android编程之监听器用法实例分析
- js 自带的sort() 方法全面了解
- Ruby on Rails中的ActiveRecord编程指南
- PHP中使用php://input处理相同name值的表单数据
- 什么样的网站能赚钱?
- Java中获取子字符串的几种方法示例
- Python多线程编程(一):threading模块综述
- Web2.0下XHTML+CSS 设计需要注意的地方小结
- java实现队列数据结构代码详解
- Vue2 配置 Axios api 接口调用文件的方法
- 利用vue + koa2 + mockjs模拟数据的方法教程
- Android开发实现拨打电话与发送信息的方法分析
- python实现在cmd窗口显示彩色文字