Java Regex - Capture de groupes
Les groupes de capture sont un moyen de traiter plusieurs personnages comme une seule unité. Ils sont créés en plaçant les caractères à regrouper dans un jeu de parenthèses. Par exemple, l'expression régulière (chien) crée un groupe unique contenant les lettres «d», «o» et «g».
Les groupes de capture sont numérotés en comptant leurs parenthèses d'ouverture de la gauche vers la droite. Dans l'expression ((A) (B (C))), par exemple, il y a quatre groupes de ce type -
- ((A)(B(C)))
- (A)
- (B(C))
- (C)
Pour savoir combien de groupes sont présents dans l'expression, appelez la méthode groupCount sur un objet matcher. La méthode groupCount renvoie unint montrant le nombre de groupes de capture présents dans le motif du matcher.
Il existe également un groupe spécial, le groupe 0, qui représente toujours l'expression entière. Ce groupe n'est pas inclus dans le total déclaré par groupCount.
Exemple
L'exemple suivant illustre comment trouver une chaîne de chiffres à partir de la chaîne alphanumérique donnée -
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexMatches {
public static void main( String args[] ) {
// String to be scanned to find the pattern.
String line = "This order was placed for QT3000! OK?";
String pattern = "(.*)(\\d+)(.*)";
// Create a Pattern object
Pattern r = Pattern.compile(pattern);
// Now create matcher object.
Matcher m = r.matcher(line);
if (m.find( )) {
System.out.println("Found value: " + m.group(0) );
System.out.println("Found value: " + m.group(1) );
System.out.println("Found value: " + m.group(2) );
} else {
System.out.println("NO MATCH");
}
}
}
Cela produira le résultat suivant -
Production
Found value: This order was placed for QT3000! OK?
Found value: This order was placed for QT300
Found value: 0