Dans le cas de la méthode lookingAt(), seule la première occurrence dans la zone est trouvée, et cela même s'il en existe d'autres.
Si le modèle d'expression régulière s'applique à la chaîne entière, l'occurrence résultante en cas de réussite, sera la chaîne de caractères complètes. Les limites seront donc en cas de correspondance le début (0) et la fin (chaine.length()) de la séquence d'entrée.
Ce dernier comportement de la méthode lookingAt() est identique pour la méthode matches(), l'occurrence ne peut être que la totalité de la chaîne de caractères si la mise en correspondance réussie.
Exemple [voir]import java.util.regexp.Matcher; import java.util.regexp.Pattern; public class MiseEnCorrespondance { public static void main(String[] args){ Pattern modele = Pattern.compile("a.c\\w*"); Matcher recherche = modele.matcher("abcxxxabcxxxabcxxx"); if(recherche.matches()){ int debut = recherche.start(); int fin = recherche.end(); String chaine = recherche.group(); System.out.println("Une occurrence a été trouvée"); System.out.println(chaine + " " + debut + " " + fin); } Matcher zone = recherche.region(6, 16); if(zone.lookingAt()){ int debut = recherche.start(); int fin = recherche.end(); String chaine = recherche.group(); System.out.println("Une occurrence a été trouvée"); System.out.println(chaine + " " + debut + " " + fin); } } Résultats : Une occurrence a été trouvée abcxxxabcxxxabcxxx 0 18 Une occurrence a été trouvée abcxxxabcx 6 16 } |