使用repalceAll 方法出现java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 0异常

代码如下:

     @Test
public void testReplaceAll(){
String sql = "select * from per_handle where id not in('3ce7405509414105a65e7456987e7393')";
String countSql = sql.replaceAll("*", " count(*) "); System.out.println(countSql);
}

以junit测试方式运行后报了如下错误:

  java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 0

出现这个错误与repalceAll方法有关,查阅java API文档可以看到 replaceAll方法结构如下:

String java.lang.String.replaceAll(String regex, String replacement)

使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。

第一个参数是一个正则表达式,第二个参数为替换后的字符串。

由于"*"在正则表达式中有特殊意义,导致报错。

尝试了两种解决方法:

1、对"*"进行转义处理,使之成为一个普通字符

 @Test
public void testReplaceAll(){
String sql = "select * from per_handle where id not in('3ce7405509414105a65e7456987e7393')";
String countSql = sql.replaceAll("\\*", " count(*) ");
System.out.println(countSql);
}

2、使用replace方法代替replaceAll方法

 @Test
public void testReplaceAll(){
String sql = "select * from per_handle where id not in('3ce7405509414105a65e7456987e7393')";
String countSql = sql.replace("*", " count(*) ");
System.out.println(countSql);
}

这种方法能够成功的原因是:

String java.lang.String.replace(CharSequence target, CharSequence replacement)

replace方法的第一参数为字符或字符串,所以默认会将"*"当成普通字符串。

java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 0的更多相关文章

  1. java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 0 *&* 解决方法

    java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 0*&*^    at java. ...

  2. java开发过程中,报错Dangling meta character '*' near index 0,解决办法

    1.split方法转化字符串为数组: String[] strPicArr = map.get("hw_pic").toString().split("*"); ...

  3. java.util.regex.PatternSyntaxException: Unexpected internal error near index 1 \ ^

    1 String a = "1991\12\16"; 2 String[] split = a.split("\\"); 3 System.out.printl ...

  4. Dangling meta character '' near index 0

    1.replaceAll()方法报错 对字符串使用replaceAll()方法替换 * ? + / | 等字符的时候会报以下异常 Dangling meta character '*' near in ...

  5. java.util.regex.PatternSyntaxException, dangling metacharacter “?” 解决方法

    今天在用正则表达式的时候遇到这样一个异常 看了相关资料后发现这是因为在正则表达式中,像"?","*","\"都是保留字符,所以在用的时候需要 ...

  6. 我的Android进阶之旅------>解决错误: java.util.regex.PatternSyntaxException: Incorrect Unicode property

    1.错误描述 今天使用正则表达式验证密码的时候,报了错误 java.util.regex.PatternSyntaxException: Incorrect Unicode property near ...

  7. Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed character class near index 0 [ ^

    Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed character clas ...

  8. java.util.regex.PatternSyntaxException: Unclosed character class near index解决办法

    使用str.split("[")时,出现java.util.regex.PatternSyntaxException: Unclosed character class near  ...

  9. Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed character class near index 0 解决方法: 要对切割字符进行转义\\

    使用str.split("[",15)时,出现Exception in thread "main" java.util.regex.PatternSyntaxE ...

随机推荐

  1. sublime text 3 license 2016.05

    补充:2016.05 最近经过测试,3个注册码在新版3103的sublime上已经不可用了. 现补充两枚新版的license key: -– BEGIN LICENSE -– Michael Barn ...

  2. javascript实现原生ajax的方法

    <script> var xmlHttp; function createxmlHttpRequest() { if (window.ActiveXObject) { xmlHttp = ...

  3. double四舍五入,商品金额大小写转换,设置货币的小数位数跟格式输出,进制转化

      1:计算double值四舍五入的方法 对小数数值进行四舍五入,首先应该确认保留小数位, 如果数值的小数精度大于保留小数位,那么开始四舍五入计算.四舍五入的方法非常简单,在所有要丢失精度的小数位中加 ...

  4. RDD常用方法之subtract&intersection&cartesian

    subtract Return an RDD with the elements from `this` that are not in `other` .     def subtract(othe ...

  5. expdp远程导出数据

    环境: 源: os:windows db:11.2.0.1 ip:192.168.213.129 sid:orcl 远程机导出: os:centos 6.5 x64 db:11.2.0.4 ip:19 ...

  6. 【转】Python资源 转自 dylanninin.com

    http://dylanninin.com/blog/2013/11/23/python_resource.html Python是在工作期间零零碎碎学习起来的.当时正值部门申购图书,鉴于Python ...

  7. Struts2中使用OGNL

    链接:Struts标签库 OGNL(Object Graphic Navigatino Language) OGNL称为对象图导航语言.以一个对象为根(起点),通过OGNL可以访问与这个对象关联的其它 ...

  8. 如何让CCLayer创造的地图,左右滑动不出现黑边

    在都是scale为1的情况下,效果图如下: , 绿色的是Screen,它的大小和坐标不变,可以理解为CCScene,下面两个就是用CCLayer的地图,有2个Layer,深颜色的就是和Scrren一样 ...

  9. Android自动化学习笔记之MonkeyRunner:用Eclipse执行MonkeyRunner脚本

    Info: 初步学习,难免会有疏漏,以后我会不断修改补全,直到完美.转载请注明出处,谢谢. 2014-10-11: 初版 2014-10-16: 完善 ------------------------ ...

  10. ios https适配(单向验证)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https是http+tls.是在http和tcp之间添加了一层ssl加密验证,ssl将http发送的信息在将要发到传输层时进行了加密,同样数据从 ...