L'interface MatchResult regroupe des méthodes destinées à être implémentées pour la récupération des informations à propos des occurrences correspondant à un modèle d'expression régulière.
La classe Matcher implémente cette interface. D'ailleurs, un objet de type référence MatchResult peut être récupéré par l'intermédiaire de la méthode toMatchResult().
MatchResult resultat = recherche.toMatchResult();
| Méthode |
|---|
| Description |
| int end() |
| retourne la position du dernier caractère (+ 1) d'une occurrence correspondant au modèle courant. |
| int end(int group) |
| retourne la position du dernier caractère (+ 1) d'une occurrence capturée dans le groupe indiqué par son numéro. |
| String group() |
| retourne une occurrence correspondant au modèle courant suite à une opération de recherche. |
| String group(int group) |
| retourne une occurrence du groupe spécifié par son numéro, correspondant au modèle courant suite à une opération de recherche. |
| int groupCount() |
| retourne le nombre de groupe de capture suite à une opération de recherche du modèle. |
| int start() |
| retourne la position du premier caractère d'une occurrence correspondant au modèle courant. |
| int start(int group) |
| retourne la position du premier caractère d'une occurrence capturée dans le groupe indiqué par son numéro, correspondant au modèle courant. |
public class Recherche {
public static void main(String[] args) {
String cible =
"Jusqu'alors, les deux mondes de l'infiniment grand\n" +
"et de l'infiniment petit étaient incompatibles.\n" +
"Le monde microscopique est totalement imprévisible.\n" +
"Le monde macroscopique est quant à lui prévisible.\n" +
"La théorie des cordes harmonise ces deux mondes.\n";
String regexp = "\\b\\w*m\\w*\\b";
Pattern modele = Pattern.compile(regexp);
Matcher recherche = modele.matcher(cible);
while(recherche.find()){
MatchResult resultat = recherche.toMatchResult();
int nombre = resultat.groupCount();
if(nombre > 0) {
for (int i = 0; i < nombre; i++) {
String chaine = recherche.group(i);
int debut = recherche.start(i);
int fin = recherche.end(i);
afficher(regexp, chaine, debut, fin, i + 1);
}
}
else {
String chaine = recherche.group();
int debut = recherche.start();
int fin = recherche.end();
afficher(regexp, chaine, debut, fin, 1);
}
}
}
public static void afficher(String regexp, String chaine, int debut, int fin, int numero) {
System.out.println("Une occurrence a été trouvée");
System.out.println("Modèle : " + regexp);
System.out.println("Numéro : " + numero);
System.out.println("Occurrence : " + chaine);
System.out.println("Début : " + debut);
System.out.println("Fin : " + fin + "\n");
}
} |