Regex não consegue capturar todos os grupos
Usandojava.util.regex
(jdk 1.6), a expressão regular201210(\d{5,5})Test
aplicado à string do assunto20121000002Test
apenas capturasgroup(0)
e não capturagroup(1)
(o padrão00002
) como deveria, dado o código abaixo:
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));
}
}
Curiosamente, outra expressão regular similar como201210(\d{5,5})Test(\d{1,10})
aplicado à string do assunto20121000002Test0000000099
captura o grupo 0 e 1, mas não o grupo 2.
Pelo contrário, usando o objeto RegExp do JavaScript, as mesmas expressões regulares aplicadas às mesmas cadeias de assunto capturam todos os grupos, como se poderia esperar. Eu verifiquei e verifiquei novamente esse fato sozinho usando esses testadores on-line:
http://www.regular-expressions.info/javascriptexample.htmlhttp://www.regextester.com/Estou fazendo algo errado aqui? Ou é que a biblioteca de regex do Java realmente é uma droga?