4.2.3 Contenu du module

Contenu du module re

Le module définit les fonctions et constantes suivantes, et une exception:

compile(pattern[, indicateurs])
Compile un motif d'expression régulière dans un objet expression régulière, qui peut être utilisé pour trouver en utilisant ses méthodes match()et search(), décrites ci-dessous.

Le comportement de l'expression peut être modifié en indiquant des indicateurs. Les valeurs peuvent être n'importe lesquels des variables suivantes combinées en utilisant OU au niveau du bit (l'opérateur |).

La séquence

prog = re.compile(pat)
result = prog.match(str)

est équivalent à

result = re.match(pat, str)

Mais la version utilisant compile() est plus efficace quand les expressions sont utilisées plusieurs fois dans un seul programme.

I
IGNORECASE
Effectue les comparaisons en étant sensible à la casse ; les expressions comme [A-Z] correspondront aussi à des lettres minuscules. Ceci n'est pas affecté par la locale actuelle.

L
LOCALE
Rend \w, \W, \b, et \Bdépendant de la locale actuelle.

M
MULTILINE
Quand indiqué, le caractère de motif "^" correspond au début de la chaine caractères et au début de chaque ligne (juste après chaque nouvelle ligne) ; et le caractère de motif "$"correspond à la fin de la chaîne de caractères et à la fin de chaque ligne (juste avant chaque nouvelle ligne). Par défaut, "^" correspond seulement au début de la chaîne de caractères, et "$" seulement à la fin de la chaîne de caractères et juste avant le saut de ligne (s'il y en a) à la fin de la chaine de caractères.

S
DOTALL
Fait correpondre le caractère spécial "." à n'importe quel caractère y compris un saut de ligne ; sans cet indicateur, "." correpondra à tout sauf un saut de ligne.

U
UNICODE
Rend dépendant \w, \W, \b, et \B des la base de données des caractères Unicode. Nouveau en version 2.0

X
VERBOSE
Cet indicateur permet d'écrire des expressions régulières plus belles. Les caractères espace du motif sont ignorés, excepté dans une classe caractère ou précédé par un antislash non échappé, et, quand un ligne contient un "#" dans une classe caractère ou précédé par un antislash non échappé, tous les caractères de l'extrême gauche tel que "#" jusqu'à la fin de la ligne sont ignorés.

search(motif, chaine[, indicateurs])
Parcours chaine à la recherche du motif de l'expression régulière, et renvoient une instance MatchObject. Renvoie None si aucune position ne correspond au motif ; il faut noter que c'est différent de trouver correspondance de longueur zéro à un certain point de la chaine de caractères.

match(motif, string[, indicateurs])
Si zéro ou plusieurs caractères au début de string correspondent à l'expression régulière motif, renvoit une instance MatchObjectcorrespondante. Renvoie None si la chaîne de caractères ne correspond pas au motif ; notez que ce n'est pas la même chose qu'une correspondance de taille zéro.

Note: Si vous voulez trouver une correspondance n'importe où dans string, utilisez search() à la place.

split(motif, string[, maxsplit = 0 ])
Fractionne string par les occurrences de motif. Si les parenthèses capturées sont utilisés dans motif, alors le texte de tous les groupes dans le motif sont également retournés en tant qu'élément de la liste résultat. Si le maxsplit n'est pas de zéro, au plus maxsplit fractionnement sont effectués, et le reste de la chaîne de caractères est retourné comme dernier élément de la liste. (note d'incompatibilité: dans la release 1.5 originale de Python, maxsplit était ignoré. Ceci a été fixé dans les versions ultérieures.)

>>> re.split('\W+', 'Words, words, words.')
['Words', 'words', 'words', '']
>>> re.split('(\W+)', 'Words, words, words.')
['Words', ', ', 'words', ', ', 'words', '.', '']
>>> re.split('\W+', 'Words, words, words.', 1)
['Words', 'words, words.']

Cette fonction combine et étend la fonctionnalité des anciennes fonctions regsub.split() et regsub.splitx().

findall(motif, chaine)
Renvoit une liste de toutes les correspondances non-recouvertes de motif dans chaine. Si un ou plusieurs groupes sont présents dans le motif, renvoit une liste de groupes ; ce sera une liste de tuples si le motif a plus d'un groupe. Les correspondances vides sont incluses dans le résultat. Nouveau en version 1.5.2

sub(motif, repl, string[, count = 0])
Renvoit la chaîne de caractères obtenue en substituant les occurences non-recouvertes de l'extrême gauche de motif dans string par les remplacements repl. Si le motif n'est pas trouvé, stringest retourné sans changement. repl peut être une chaîne de caractères ou une fonction ; si c'est une fonction, elle est appelée pour chaque occurrence non-recouverte de motif. La fonction prend comme argument un simple objet de correspondance, et renvoie les chaîne de caractères de remplacement. Par exemple:

>>> def dashrepl(matchobj):
....    if matchobj.group(0) == '-': return ' '
....    else: return '-'
>>> re.sub('-{1,2}', dashrepl, 'pro----gram-files')
'pro--gram files'

Le motif peut être une chaîne de caractères ou un objet regex ; si vous devez indiquer des indicateurs d'expression régulière, vous devez utiliser un objet regex, ou utilisez des modificateurs inclus dans un motif ; par exemple "sub("(?i)b+", "x", "bbbb BBBB")" renvoie le 'x x'.

L'argument optionnel count est le nombre maximum d'occurrences de motif à substituer ; count doit être un nombre entier non négatif, et la valeur par défaut de 0 signifie substituer toutes les occurrences.

Des correspondances vides pour le motif sont substituées seulement quand non adjacentes à une correspondance précédente, ainsi "sub('x*', '-', 'abc')" renvoie '-a-b-c-'.

Si repl est une chaîne de caractères, tous les antislash échappé sont traité. C'est-à-dire, "\n" est converti en simple saut de ligne, "\r" est converti en retour charriot, et ainsi de suite. Les échappements inconnus tels que "\j" sont laissés tels que. Les références arrières, tel que "\6", sont remplacées par la sous-chaîne correspondante au groupe 6 dans le motif.

En plus des caractères échappés et des références arrières sont décrit ci-dessous, "\g<name>" utilisera la sous-chaîne correspondant au groupe nommé "name", comme défini par la syntaxe (?P<name>...). "\g<number>" utilise le nombre du groupe correspondant ; "\g<2>" est donc équivalent à "\2", mais n'est pas ambigu pour un remplacement tel que "\g<2>0". "\20" serait interprété comme référence au groupe 20, pas référence au groupe 2 suivi du caractère littéral "0".

subn(motif, repl, string[, count = 0])
Exécute la même opération que sub(), mais renvoie un tuple (new_string, number_of_subs_made).

escape(string)
Renvoie string avec toutes les non-alphanumériques antislashés ; c'est utile si vous voulez chercher une chaîne de caractères littérale arbitraire qui peut contenir des métacaractères d'expression régulières.

error
Exception levé quand une chaîne de caractères passée vers une des fonctions ici n'est pas une expression régulière valide (par exemple, parenthèses inégalées) ou quand une autre erreur se produit pendant la compilation ou la recherche. Ce n'est jamais une erreur si une chaîne de caractères ne contient aucune correspondance d'un motif.