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 :
En fait, le matches renvoie toujours faux. En revanche, le find fonctionne, j'obtient la trace suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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()); }
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ù...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 departement456
J'ai essayé "departement(\\d*)" également, mais ça ne change rien
J'attends vos conseils donc.
Partager