problème de capture dans une expression régulière
Bonjour,
Je souhaite capturer une donnée dans un String. Je sais, c'est un sujet récurrent, toussa, toussa, mais je ne trouve pas de solution avec les parenthèses qui doivent servir de groupe de capture.
Donc mon problème : j'ai une chaine de caractère qui contient des lettres, des espaces, des chiffres, et dans le lot, ceci "departement456", ou 456 peut être n'importe quel entier positif (mon but est de récupérer le 456 en question)
J'ai donc construit l'expression régulière suivante avec le code suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
// compilation de la regex
Pattern p = Pattern.compile("departement(\\d+)");
// création dun moteur de recherche
Matcher m = p.matcher("dxu 789645 00000123 departement456 001 ");
// lancement de la recherche de toutes les occurrences
boolean b = m.matches();
// si recherche fructueuse
if(b) {
// pour chaque groupe
for(int i=0; i<=m.groupCount(); i++) {
// affichage de la sous-chaîne capturée
System.out.println("Groupe " + i + " : " + m.group(i));
}
}
while(m.find()){
System.out.println(m.group());
} |
En fait, le matches renvoie toujours faux. En revanche, le find fonctionne, j'obtient la trace suivante :
La capture par parenthèse ne fonctionne pas apparemment. Je suppose que mon expression régulière est mal construite, mais je ne vois pas où...
J'ai essayé "departement(\\d*)" également, mais ça ne change rien
J'attends vos conseils donc.