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 : 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 d’un 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.