Вы получите это сообщение об исключении при попытке использовать именованные группы при проверке или сопоставлении регулярных выражений Java.
Основная причина ошибки «Соответствие не найдено» в сопоставлении именованных групп регулярных выражений
В журнале ошибок отобразится сообщение, подобное следующему:
Exception in thread "main" java.lang.IllegalStateException: No match foundat java.util.regex.Matcher.group(Unknown Source)
Решение
Вы, вероятно, не используете «matcher.matches()» перед извлечением именованной группы из matcher. Вам следует выполнить полную опцию, как показано ниже:
List<String> dates = new ArrayList<String>();dates.add("02/31/2011"); //Invalid datedates.add("02/27/2011"); //Valid dateString regex = "^(?<month>[0-3]?[0-9])/(?<day>[0-3]?[0-9])/(?<year>(?:[0-9]{2})?[0-9]{2})$";Pattern pattern = Pattern.compile(regex);for(String date : dates){Matcher matcher = pattern.matcher(date);//This is the root cause of error. Don't forget to do this !!matcher.matches();//Get date parts hereString day = matcher.group(2);String month = matcher.group(1);String year = matcher.group(3);String formattedDate = month + "/" + day + "/" + year;System.out.println("Date to check : " + formattedDate);}
В большинстве случаев это решит вашу ошибку.