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.
Exemple [voir]
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");
    }
}