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"); } } |