Python - Module Regex (re)
Description
Le module re permet de faire des opérations avec des expression régulières. Le module est natif sur Python, il suffit de l'importer en début de code comme ceci:
Voici un tableau comprennant les syntaxe d'expressions régulières les plus courantes:
| Expression | Description |
|---|---|
. |
Valide tout caractère à l’exception du saut de ligne |
^ |
Détermine le début d'une chaine de caractère |
$ |
Détermine la fin d'une chaine de caractère |
* |
Valide 0 répétition ou plus de l’expression qui précède |
+ |
Valide 1 répétition ou plus de l’expression qui précède |
? |
Valide 0 ou 1 répétition de l’expression qui précède |
{n} |
Valide n copies de l’expression qui précède |
{n,m} |
Valide l’expression qui précède entre n et m copies |
\ |
Permet d'échapper un caractère spécial |
[] |
Valide un ensemble de caractère |
A\|B |
Valide soit A, soit B (OU) |
\A |
Correspond uniquement au début d’une chaîne de caractères |
\b |
Correspond à une chaine vide |
\B |
Correspond à une chaine vide, mais uniquement au début ou à la fin d'un mot |
\d |
Correspond à un chiffre [0-9] |
\D |
Correspond à tout caractère qui n'est pas un chiffre [^0-9] |
\s |
Correspond à un caractère d'espacement [ \t\n\r\f\v] |
\S |
Correspond à tout caractère qui n'est pas un caractère d'espacement [^ \t\n\r\f\v] |
\w |
Correspond à tout caractère de mot [a-zA-Z0-9_] |
\W |
Correspond à tout caractère qui n'est pas un caractère de mot [^a-zA-Z0-9_] |
\Z |
Correspond uniquement à la fin d’une chaîne de caractères |
Voici la présentation de quelques méthodes pratiques du module re.
Méthodes
re.compile
La méthode compile permet de compiler une expression régulière afin d'accroitre la rapidité d'execution des méthodes match() et search(). Cela est très utile quand on doit utiliser une même expression plusieurs fois dans un script afin de gagner en temps d'execution:
lst = ['string1', 'string2', 'string3']
expr_compile = re.compile(r'^s.*\d')
for l in lst:
if expr_compile.match(l):
print 'Yes'
else:
print 'No'
# Yes
# Yes
# Yes
re.search
La méthode re.search analyse la chaine de caractère à la recherche du premier emplacement où l’expression rationnelle trouve une correspondance, et renvoie l”objet de correspondance trouvé. Renvoie Nonesi rien n'est trouvé:
re.match
La méthode re.match analyse le début de la chaine de caractère à la recherche du premier emplacement où l’expression rationnelle trouve une correspondance, et renvoie l”objet de correspondance trouvé. Renvoie Nonesi rien n'est trouvé.
Warning
A la difference de la méthode search, match ne renvoie que les chaines de caractères commençant par l'expression régulière
re.split
Le module re.split permet de découper une chaine de caractère en fonction de l'expression régulière en argument:
re.split(r'\W+', 'Words, words, words.')
# ['Words', 'words', 'words', '']
re.split(r'\W+', 'Words, words, words.', 1)
# ['Words', 'words, words.']
Utilisation
Expression Capturante
Il est possible de capturer une ou plusieurs chaine de caractère et les récupérer avec un id ou une chaine de caractère.
Voici comment les récupérer avec un id:
m = re.search(r'_([eck]m\d+)_.*_([eck]m\d+)_', string)
m.group(0)
> '_em7062_tiths514_6a59d4_cm6032_'
m.group(1)
> 'em7062'
m.group(2)
> 'cm6032'
Voici comment les récupérer avec une chaine de caractère:
m = re.search(r'_(?P<first_sw>[eck]m\d+)_.*_(?P<sec_sw>[eck]m\d+)_', string)
m.group('first_sw')
> 'em7062'
m.group('sec_sw')
> 'cm6032'