Les Expressions régulières en Python

module    re 

puissantes 

...récupérer des informations dans de gros fichiers

parsing

...recherche de données dans un fichier

Expression régulière :  Suite de caractères qui a pour but de décrire un fragment de texte

regex = motif ou pattern 

  • caractères normaux
  • métacaractères

métacaractères...

ˆ Début de chaîne de caractères ou de ligne.
Exemple : la
regex ˆATG est retrouvée dans la chaîne de caractères ATGCGT mais pas dans la chaîne CCATGTT.


$ Fin de chaîne de caractères ou de ligne.
Exemple : la
regex ATG$ est retrouvée dans la chaîne de caractères TGCATG mais pas dans la chaîne CCATGTT.


. N’importe quel caractère (mais un caractère quand même).
Exemple : la
regex A.G est retrouvée dans ATG, AtG, A4G, mais aussi dans A-G ou dans A G.
 

[ABC] Le caractère A ou B ou C (un seul caractère).
Exemple : la
regex T[ABC]G est retrouvée dans TAG, TBG ou TCG, mais pas à TG.


[A-Z] N’importe quelle lettre majuscule.
Exemple : la
regex C[A-Z]T est retrouvée dans CAT, CBT, CCT. . .
[a-z] N’importe quelle lettre minuscule.

[g-s] N’importe quelle lettre minuscule de  g à s.
[0-9] N’importe quel chiffre.
[A-Za-z0-9] N’importe quel caractère alphanumérique.


[ˆAB] N’importe quel caractère sauf A et B.
Exemple : la
regex CG[ˆAB]T est retrouvée dans CG9T, CGCT. . . mais pas dans CGAT ni dans CGBT.

\ Caractère d’échappement (pour protéger certains caractères).
Exemple : la
regex \+ désigne le caractère + littéral. La regex A\.G est retrouvée dans A.G et non pas dans A suivi de n’importe quel caractère, suivi de G.

* 0 à n fois le caractère précédent ou l’expression entre parenthèses précédente.
Exemple :
la
regex A(CG)*T est retrouvée dans AT, ACGT, ACGCGT. . .


+ 1 à n fois le caractère précédent ou l’expression entre parenthèses précédente.
Exemple : la
regex A(CG)+T est retrouvée dans ACGT, ACGCGT. . . mais pas dans AT.


? 0 à 1 fois le caractère précédent ou l’expression entre parenthèses précédente.
Exemple : la
regex A(CG)?T est retrouvée dans AT ou ACGT.

{n} n fois le caractère précédent ou l’expression entre parenthèses précédente.
Exemple :
la
regex A(CG){2}T est retrouvée dans ACGCGT mais pas dans ACGT, ACGCGCGT ou ACGCG.


{n,m} n à m fois le caractère précédent ou l’expression entre parenthèses précédente.
Exemple :
la
regex A(C){2,4}T est retrouvée dans ACCT, ACCCT et ACCCCT mais pas dans ACT, ACCCCCT ou ACCC.


{n,} Au moins n fois le caractère précédent ou l’expression entre parenthèses précédente.
Exemple :
la
regex A(C){2,}T est retrouvée dans ACCT, ACCCT et ACCCCT mais pas à ACT ou ACCC.

{,m} Au plus m fois le caractère précédent ou l’expression entre parenthèses précédente.
Exemple : la regex A(C){,2}T est retrouvée dans AT, ACT et ACCT mais pas dans ACCCT ou ACC.
 

(CG|TT) Les chaînes de caractères CG ou TT.
Exemple :
la
regex A(CG|TT)C est retrouvée dans ACGC ou ATTC.

\d remplace n’importe quel chiffre (d signifie digit), équivalent à [0-9].


\w remplace n’importe quel caractère alphanumérique et le caractère souligné (underscore) (w signifie word character), équivalent à [0-9A-Za-z_].


\s remplace n’importe quel « espace blanc » (whitespace) (s signifie space), équivalent à [\t\n\r\f].

 

Exemples

Nom de variables

credit image : enib

Pour aller plus loin 

 le module    re 

en action

import re
animaux = "giraphe tigre singe"
re.search("tigre", animaux)
if re.search("tigre", animaux):
    print("OK")       # affiche OK
search(motif, chaine)

La fonction search()

renvoie un objet du type SRE_Match considéré comme True dans un test.

import re
animaux = "girafe tigre singe"
re.match("tigre", animaux)
if re.match("tigre", animaux):
    print("OK") 
else:
    print("NO")      # affiche NO

re.match("girafe", animaux)
if re.match("girafe", animaux):
    print("OK")      # affiche OK

La fonction match()

La fonction match() fonctionne comme search() sauf qu'elle renvoie un objet SRE_Match seulement si la regex correspond au début de la chaîne de caractères.

import re
animaux = "girafe tigre singe"
re.fullmatch("tigre", animaux)
if re.fullmatch("tigre", animaux):
    print("OK") 
else:
    print("NO")      # affiche NO

re.fullmatch("girafe tigre singe", animaux)
if re.fullmatch("girafe tigre singe", animaux):
    print("OK")      # affiche OK

La fonction fullmatch()

La fonction fullmatch()  renvoie un objet SRE_Match si et seulement si la regex correspond exactement à  la chaîne de caractères.

import re
...
EN CONSTRUCTION

La fonction compile()

compile une regex et renvoie un objet de type SRE_Pattern utilisable avec la méthode search()

Les Expressions régulières en Python

By snt

Les Expressions régulières en Python

Découvrez les expressions régulières...

  • 1,357