Я хотел бы извлечь из текста длину 3-5. Образец ниже работает для всех моих случаев.Проверьте, не является ли результат уникальным
Pattern pattern = Pattern.compile("(^|[\\D]|.*[\\D])(?<number>[0-9]{3,5})($|[\\D]|[\\D].*)");
//Working examples always returns 111
//Matcher m = pattern.matcher("XX 111, YYY 37124091");
//Matcher m = pattern.matcher("XX 111");
//Matcher m = pattern.matcher("X111");
//Matcher m = pattern.matcher("111");
Единственная проблема, которую я получил, когда картина, как я полагаю, должен найти несколько матчей, как на примере ниже (111, 123), вместо этого он возвращает только 123
Matcher m = pattern.matcher("XX 111, CCC 123 YYY 37124091");
while(m.find()){
System.out.println(m.group("number");
}
Как я могу что шаблон соответствует совпадению 2 раза или почему он не подходит для 111 и 123?
Вы используете Java 7? – sln
@sln да действительно использование новейший 1.7. – MortalFool