Suite à une mise en correspondance, il peut être utile de récupérer les occurrences et leurs limites.

Plusieurs méthodes sont conçues à cet effet. La méthode group() permet de récupérer une occurrence, tandis que les méthodes start() et end() retournent les positions de début et de fin de l'occurrence au sein de la chaîne de caractères cible.

Pattern modele = Pattern.compile("a.c");
Matcher recherche = modele.matcher("abcxxxabcxxxabcxxx");
while(recherche.find()){
    System.out.println("Occurrence : " + recherche.group());
    System.out.println("Début      : " + recherche.start());
    System.out.println("Fin        : " + recherche.end() + "\n");
}
System.out.println("Utilisation de lookingAt()");
Matcher zone = recherche.region(6, 16);
if(zone.lookingAt()){
    int debut = recherche.start();
    int fin = recherche.end();
    String chaine = recherche.group();
    System.out.println("Occurrence : " + chaine);
    System.out.println("Début      : " + debut);
    System.out.println("Fin        : " + fin + "\n");
}
Resultats :
Occurrence : abc
Début      : 0
Fin        : 3

Occurrence : abc
Début      : 6
Fin        : 9

Occurrence : abc
Début      : 12
Fin        : 15

Utilisation de lookingAt()
Occurrence : abc
Début      : 6
Fin        : 9
Exemple [voir]
private void rechercher() {
    try {
        if(this.fen.getTxtSource() != null 
        && !this.fen.getTxtSource().equals(Utilitaires.VIDE)
        && this.fen.getExpression() != null 
        && !this.fen.getExpression().equals(Utilitaires.VIDE)) {
            Pattern modele = Pattern.compile(this.fen.getExpression(), 
                     this.calculerOptions());
            Matcher recherche = modele.matcher(this.fen.getTxtSource());
            int compteur = 0;
            this.fen.initTable();
            this.fen.supprimerSelection();
            while(recherche.find()) {
                compteur++;
                this.afficher(
                            compteur,
                            0,
                            recherche.start(), 
                            recherche.end(), 
                            recherche.group());
            }
            this.fen.setLblTrouves(this.afficherTrouves(compteur));
            this.fen.ajouterSelection();
        }
    }
    catch(PatternSyntaxException e) {
        this.afficher(e);
    }
}
private void afficher(int compteur, int groupe, int debut, int fin, String chaine) {
    final String[] valeurs = new String[] {
                            String.valueOf(compteur),
                            groupe > 0 ? String.valueOf(groupe) : Utilitaires.VIDE, 
                            String.valueOf(debut), 
                            String.valueOf(fin), 
                            chaine};
    fen.getModele().addRow(valeurs);
}