Regex не в состоянии захватить все группы
С помощьюjava.util.regex
(JDK 1.6), регулярное выражение201210(\d{5,5})Test
применяется к теме строки20121000002Test
только захватываетgroup(0)
и не захватываетgroup(1)
(шаблон00002
) как и положено, учитывая приведенный ниже код:
Pattern p1 = Pattern.compile("201210(\\d{5,5})Test");
Matcher m1 = p1.matcher("20121000002Test");
if(m1.find()){
for(int i = 1; i<m1.groupCount(); i++){
System.out.println("number = "+m1.group(i));
}
}
Любопытно, что другое подобное регулярное выражение, как201210(\d{5,5})Test(\d{1,10})
применяется к теме строки20121000002Test0000000099
захватывает группы 0 и 1, но не группу 2.
Напротив, используя JavaScript-объект RegExp, одни и те же регулярные выражения, применяемые к точно таким же строкам темы, охватывают все группы, как и следовало ожидать. Я проверил и перепроверил этот факт самостоятельно, используя следующие онлайн-тестеры:
http://www.regular-expressions.info/javascriptexample.htmlhttp://www.regextester.com/Я что-то здесь не так делаю? Или библиотека регулярных выражений Java действительно отстой?