正则表达式里matcher.find()一直为false
Posted F_YuXiang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式里matcher.find()一直为false相关的知识,希望对你有一定的参考价值。
项目里用matcher.find()发现有匹配的,也为false。
解决办法就是去掉^和$。
public static String replaceStr(String str){ //针对字符串处理 String reg = "[\\u4e00-\\u9fa5]{4}(:|:)([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8])))"; // String reg = "(:|:)"; Pattern pattern = Pattern.compile(reg); Matcher matcher = pattern.matcher(str); System.out.println(matcher.find()+""); StringBuilder sb = new StringBuilder(); //查找符合规则的子串 while(matcher.find()){ //获取 字符串 sb.setLength(0); sb.append(matcher.group()); System.out.println(sb.toString()); //获取的字符串的首位置和末位置 System.out.println(matcher.start()+"--"+matcher.end()); str = str.replace(matcher.group(),"**"+matcher.group()+"**"); } System.out.println(str); return str; }
以上是关于正则表达式里matcher.find()一直为false的主要内容,如果未能解决你的问题,请参考以下文章
正则表达式Matcher.find报错 java.lang.StackOverflowError解决
当 Matcher.find() 运行时间过长时,如何终止它?
matcher.find() 匹配成功,但是System.out.println(matcher.find())返回false