Expressions rationelles en Python

De knowledge
Aller à la navigation Aller à la recherche

Les expressions régulières (rationelles en français ou regular expressions anglais) sont quelque chose de merveilleux.

Modules utilisés

Et oui contrairement à perl où les regexp sont incluse dans le langage dans python il faut utiliser un module. Bon je crois qu'il est là par défaut.

on doit donc faire un :

 import re

pour pouvoir l'utiliser.

Utilisation

Recherche

Pour faire une recherche dans une chaine:

import re

#Teste si la chaine commence par "Les" et se termine par "duchesse"

txt = "Les chausettes de l'archiduchesses"
x = re.search("^Les.*duchesses$", txt)

if x:
  print("OUI! Ca colle!")
else:
  print("Non")

Remplacement

On peut remplacer classiquement un motif "regexp" par une chaine donnée:

import re

# Remplace les espaces par des "underscore"

txt = "Les chausettes de l'archiduchesses"
x = re.sub("\s", "_", txt)
print(x)

Vas nous donner :

Les_chausettes_de_l'archiduchesses

Les fonctions plus subtiles

findall

Donne la liste de toutes les chaines correspondant au motif.

import re

#Return a list containing every occurrence of "ai":

txt = "Les chaussettes de l'archiduchesse sont-elles sèches? Archi-sèches ?"
x = re.findall(".s+.", txt)
print(x)

On cherche la liste des chaînes du texte contenant un ou plusieurs "s" à la suite précédé et suivi d'un caractère quelconque.? Ça nous donne:

['es ', 'usse', 'es ', 'esse', ' so', 'es ', 'es?', '-sè', 'es ']