關於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