re — expressions régulières simples

Ce module implémente des opérations sur les expressions régulières. La syntaxe d’expression régulière prise en charge est un sous-ensemble du module re de CPython (et constitue en fait un sous-ensemble des expressions régulières étendues POSIX).

Les opérateurs et séquences spéciales pris en charge sont :

.

Correspond à n’importe quel caractère.

[...]

Correspond à un ensemble de caractères. Les caractères individuels et les plages sont pris en charge, y compris les ensembles niés (par exemple [^a-c]).

^

Correspond au début de la chaîne.

$

Correspond à la fin de la chaîne.

?

Correspond à zéro ou une occurrence du sous-motif précédent.

*

Correspond à zéro ou plusieurs occurrences du sous-motif précédent.

+

Correspond à une ou plusieurs occurrences du sous-motif précédent.

??

Version non gourmande de ?, correspond à zéro ou une occurrence, avec une préférence pour zéro.

*?

Version non gourmande de *, correspond à zéro ou plusieurs occurrences, avec une préférence pour la correspondance la plus courte.

+?

Version non gourmande de +, correspond à une ou plusieurs occurrences, avec une préférence pour la correspondance la plus courte.

|

Correspond soit au sous-motif de gauche, soit au sous-motif de droite de cet opérateur.

(...)

Regroupement. Chaque groupe est capturant (la sous-chaîne qu’il capture est accessible avec la méthode match.group()).

(?:...)

Regroupement non capturant. Chaque groupe est mis en correspondance selon les mêmes règles que le regroupement ordinaire, mais ne fera pas partie de l’objet de correspondance.

\d

Correspond à un chiffre. Équivalent à [0-9].

\D

Correspond à un caractère non numérique. Équivalent à [^0-9].

\s

Correspond à un espace blanc. Équivalent à [ \t-\r].

\S

Correspond à un caractère non blanc. Équivalent à [^ \t-\r].

\w

Correspond aux « caractères de mot » (ASCII uniquement). Équivalent à [A-Za-z0-9_].

\W

Correspond aux caractères qui ne sont pas des « caractères de mot » (ASCII uniquement). Équivalent à [^A-Za-z0-9_].

\

Caractère d’échappement. Tout autre caractère suivant la barre oblique inverse, à l’exception de ceux listés ci-dessus, est pris littéralement. Par exemple, \* est équivalent au littéral * (et n’est pas traité comme l’opérateur *). Notez que \r, \n, etc. ne sont pas traités de manière spéciale et seront équivalents aux lettres littérales r, n, etc. Pour cette raison, il n’est pas recommandé d’utiliser des chaînes Python brutes (r"") pour les expressions régulières. Par exemple, r"\r\n" utilisée comme expression régulière est équivalente à "rn". Pour faire correspondre un caractère CR suivi d’un LF, utilisez "\r\n".

NON PRIS EN CHARGE :

  • les répétitions comptées ({m,n})

  • les groupes nommés ((?P<name>...))

  • les assertions plus avancées (\b, \B)

  • les échappements de caractères spéciaux comme \r, \n - utilisez plutôt l’échappement propre à Python

  • etc.

Exemple

import re

# As re doesn't support escapes itself, use of r"" strings is not
# recommended.
regex = re.compile("[\r\n]")

regex.split("line1\rline2\nline3\r\n")

# Result:
# ['line1', 'line2', 'line3', '', '']

Fonctions

re.compile(regex_str: str, flags: int = 0) 'regex'

Compile l’expression régulière et renvoie un objet regex.

re.search(regex_str: str, string: str) 'match | None'

Compile regex_str et le recherche dans string. Contrairement à match, ceci recherche dans la chaîne la première position qui correspond à l’expression régulière (qui peut tout de même être 0 si l’expression régulière est ancrée).

re.sub(regex_str: str, replace: str | Callable, string: str, count: int = 0, flags: int = 0, /) str

Compile regex_str et le recherche dans string, en remplaçant toutes les correspondances par replace, et renvoie la nouvelle chaîne.

replace peut être une chaîne ou une fonction. S’il s’agit d’une chaîne, des séquences d’échappement de la forme \<number> et \g<number> peuvent être utilisées pour développer le groupe correspondant (ou une chaîne vide pour les groupes non mis en correspondance). Si replace est une fonction, elle doit prendre un seul argument (la correspondance) et doit renvoyer une chaîne de remplacement.

Si count est spécifié et non nul, la substitution s’arrêtera après ce nombre de substitutions effectuées. L’argument flags est ignoré.

Objets Regex

Expression régulière compilée. Les instances de cette classe sont créées à l’aide de re.compile().

class re.regex

Objet d’expression régulière compilée renvoyé par re.compile().

match(string: str, pos: int = 0, endpos: int | None = None) 'match | None'

Applique cette expression régulière compilée à string, ancrée au début de la région de recherche, et renvoie un objet match, ou None si l’expression régulière ne correspond pas. Il s’agit de l’équivalent au niveau motif compilé de la classe match du module, et c’est bien plus efficace lorsque le même motif est appliqué à plusieurs chaînes.

Le paramètre facultatif pos donne un index dans string où la recherche doit commencer ; sa valeur par défaut est 0. Ceci n’est pas tout à fait équivalent à un découpage de la chaîne ; le caractère de motif '^' correspond au véritable début de la chaîne et aux positions juste après un saut de ligne, mais pas nécessairement à l’index où la recherche doit commencer.

Le paramètre facultatif endpos limite jusqu’où string est recherchée ; ce sera comme si la chaîne avait une longueur de endpos caractères, de sorte que seuls les caractères de pos à endpos - 1 sont recherchés. Si endpos est None (la valeur par défaut), la chaîne entière est recherchée.

search(string: str, pos: int = 0, endpos: int | None = None) 'match | None'

Parcourt string à la recherche du premier emplacement où cette expression régulière compilée produit une correspondance, et renvoie un objet match, ou None si aucune position ne correspond. Il s’agit de l’équivalent au niveau motif compilé de la fonction search() du module, et c’est bien plus efficace lorsque le même motif est appliqué à plusieurs chaînes.

Le paramètre facultatif pos donne un index dans string où la recherche doit commencer ; sa valeur par défaut est 0. Ceci n’est pas tout à fait équivalent à un découpage de la chaîne ; le caractère de motif '^' correspond au véritable début de la chaîne et aux positions juste après un saut de ligne, mais pas nécessairement à l’index où la recherche doit commencer.

Le paramètre facultatif endpos limite jusqu’où string est recherchée ; ce sera comme si la chaîne avait une longueur de endpos caractères, de sorte que seuls les caractères de pos à endpos - 1 sont recherchés. Si endpos est None (la valeur par défaut), la chaîne entière est recherchée.

sub(replace: str | Callable, string: str, count: int = 0, flags: int = 0, /) str

Recherche cette expression régulière compilée dans string, en remplaçant toutes les correspondances par replace, et renvoie la nouvelle chaîne. Il s’agit de l’équivalent au niveau motif compilé de la fonction sub() du module, et c’est bien plus efficace lorsque le même motif est appliqué à plusieurs chaînes.

replace peut être une chaîne ou une fonction. S’il s’agit d’une chaîne, des séquences d’échappement de la forme \<number> et \g<number> peuvent être utilisées pour développer le groupe correspondant (ou une chaîne vide pour les groupes non mis en correspondance). Si replace est une fonction, elle doit prendre un seul argument (la correspondance) et doit renvoyer une chaîne de remplacement.

Si count est spécifié et non nul, la substitution s’arrêtera après ce nombre de substitutions effectuées. L’argument flags est ignoré.

split(string: str, max_split: int = -1, /) List[str]

Découpe une string à l’aide d’une expression régulière. Si max_split est fourni, il spécifie le nombre maximal de découpages à effectuer. Renvoie une liste de chaînes (il peut y avoir jusqu’à max_split+1 éléments s’il est spécifié).

Objets Match

Un objet match contient le résultat d’une correspondance réussie.

class re.match(regex_str: str, string: str)

Met regex_str en correspondance avec string, ancrée au début de la chaîne, et renvoie un objet match, ou None s’il n’y a pas de correspondance. Il s’agit du raccourci au niveau du module : re.match(regex_str, string) est équivalent à re.compile(regex_str).match(string).

Le même objet match est également renvoyé par search(), par les méthodes regex.match() / regex.search() au niveau motif compilé, et est passé à la fonction de remplacement utilisée par sub().

group(index: int) str

Renvoie la (sous-)chaîne correspondante. index vaut 0 pour la correspondance entière, 1 et au-delà pour chaque groupe capturant. Seuls les groupes numériques sont pris en charge.