Quelle est la différence entre les fonctions search() et match() du module re dans Python ?
search ⇒ trouve le texte n’importe où dans la chaîne de caractères et renvoie le résultat.
match ⇒ trouve le texte au début de la chaîne et renvoie le résultat.
match est beaucoup plus rapide que search, donc au lieu de faire
regex.search("mot")
vous pouvez faireregex.match((.* ?)mot(.* ?))
et gagner en performance si vous travaillez avec des millions de données.
Voir l’exemple ci-dessous pour comprendre le fonctionnement de re.match() et de re.search().
str = "123abc"
res = re.match("[a-z]+", str)
res = re.search("[a-z]+", str)
re.match renverra none
, mais re.search renverra abc
.
De façon plus courte :
- search() analyse l’ensemble de la chaîne.
- match() analyse uniquement le début de la chaîne.
Le programme suivant l’affirme :
>>> str = "123abc"
>>> re.match("[a-z]+", str)
None
>>> re.search("[a-z]+", str)
abc