关于Java错误:Exception in thread "main" java.lang.IllegalStateException: No match found的解决方案


 1 public static void main(String[] args) {
 2         String line = "ABCDEFG666dcab";
 3         String pattern = "(\\D*)(\\d+)(.*)";
 4         Pattern r = Pattern.compile(pattern);
 5         Matcher m = r.matcher(line);
 6         System.out.println("Found value: " + m.group(0));
 7         System.out.println("Found value: " + m.group(1));
 8         System.out.println("Found value: " + m.group(2));
 9         System.out.println("Found value: " + m.group(3));
10 }

上述代码的原本目的是捕获字符串的三个部分:ABCDEFG,666还有dcba,但是真正运行的时候却报出了异常

修改成下面的形式即可

 1 public static void main(String[] args){
 2         String line = "ABCDEFG666dcab";
 3         String pattern = "(\\D*)(\\d+)(.*)";
 4         Pattern r = Pattern.compile(pattern);
 5         Matcher m = r.matcher(line);
 6         if (m.find( )) {
 7             System.out.println("Found value: " + m.group(0) );
 8             System.out.println("Found value: " + m.group(1) );
 9             System.out.println("Found value: " + m.group(2) );
10             System.out.println("Found value: " + m.group(3) );
11         } else {
12             System.out.println("NO MATCH");
13         }
14     }

 关于为什么可以这么改,以及find的具体含义,可以看一下我的另一篇随笔https://www.cnblogs.com/owczhlol/p/12926609.html


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM