4.2.5 Objets correspondant

Les instances de MatchObject supportent les méthodes et les attributs suivants :

MatchObjectexpand(template)
Renvoie la chaîne de caractères obtenue en faisant la substitution d'antislash sur la chaine de descripteur template, comme fait par la méthode sub(). Les échappements comme "\n" sont convertis en caractères appropriés, et des backreferences numériques ("\1", "\2") et les backreferences nommés ("\g<1>", "\g<name>") sont remplacés par le contenu des groupes correspondants.

MatchObjectgroup([group1, ...])
Renvoie un ou plusieurs sous-groupes de la correspondance. S' il y a un seul argument, le résultat est une chaîne de caractères simple ; s' il y a des arguments multiples, le résultat est un tuple avec un élément par argument. Sans arguments, group1 vaut par défaut zéro (c.-à-d. que la correspondance entière est retournée). Si un argument groupN est zéro, la valeur de retour correspondante est la chaîne de caractères correspondante entière ; s' il est dans l'intervalle inclus [1..99], c'est la chaîne de caractères correspondant au groupe entre parenthèses. Si un nombre de groupe est négatif ou plus grand que le nombre de groupes définis dans le motif, une exception IndexError est levée. Si un groupe est contenu dans une partie du motif qui ne correspond pas, le résultat est -1. Si un groupe est contenu dans une partie du motif qui correspond plusieurs fois, la dernière correspondance est renvoyée.

Si l'expression régulière utilise la syntaxe (?P<name>...), les arguments groupN peuvent également être des chaînes de caractères identifiant des groupes par leur nom de groupe. Si une chaine d'argument n'est pas utilisée comme nom de groupe dans le motif, une exception IndexError est levée.

Un exemple modérément compliqué:

m = re.match(r"(?P<int>\d+)\.(\d*)", '3.14')

Après exécution de cette recherche, m.group(1) est '3', de même que m.group('int'), et m.group(2) est '14'.

MatchObjectgroups([default])
Renvoie un tuple contenant tous les sous-groupes de la correspondance, de 1 jusqu' à autant de groupes que dans le motif. L'argument default est utilisé pour les groupes qui n'ont pas participé à la correspondance ; il vaut par défaut None. (note d'incompatibilité: dans la release initiale 1.5 de Python, si le tuple était un long, une chaîne de caractères seraient retournée à la place. Dans les versions postérieures (à partir de 1.5.1), un simple tuple est retourné dans de tels cas.)

MatchObjectgroupdict([default])
Renvoie un dictionnaire contenant tous les sous-groupes nommés de la correspondance, avec le nom de sous-groupe comme clé. L'argument default est utilisé pour les groupes qui n'ont pas participé à la correspondance ; il vaut par défaut None.

MatchObjectstart([groupe])
end([group])
Renvoie les indices de début et de fin de la sous-chaîne correspondante au groupe ; groupe vaut zéro par défaut (signifiant la sous-chaîne correspondante entière). Renvoie -1 si le groupe existe mais ne correspond pas. Pour un objet m correspondant, et un groupe g qui a contribué à la correspondance, la sous-chaîne correspondant au groupe g (équivalent à m.group(g)) est

m.string[m.start(g):m.end(g)]

Notez que m.start(group) équivaut à m.end(group) si group correspond à une chaîne vide. Par exemple, après m = re.search('b(c?)', 'cba'), m.start(0) vaut 1, m.end(0) vaut 2, m.start(1) et m.end(1) valent 2, et m.start(2) lève l'exception IndexError.

MatchObjectspan([group])
Pour le MatchObject m, renvoie les 2-tuples (m.start(group), m.end(group)). Notez que si le group ne contribue pas à la correspondance, c'est (-1, -1). Encore, group vaut zéro par défaut.

MatchObjectpos
La valeur de pos qui a été passé aux fonctions search() ou match(). C'est l'index dans la chaîne de caractères auquel le moteur regex a démarré la recherche d'une correspondance.

MatchObjectendpos
La valeur de endpos qui est passée à la fonction search() ou match(). C'est l'index de la chaine après lequel le moteur regex n'ira pas.

MatchObjectre
L'objet expression régulière dont la méthode match() ou search() a produit cette instance MatchObject.

MatchObjectstring
La chaine passée à match() ou search().

Voir aussi:

Jeffrey Friedl, Mastering Regular Expressions, O'Reilly. Les informations Python dans ce livre date d'avant le module re, mais il couvre l'écriture correcte des motifs d'expression régulière en détail.