Différence entre search et match - Python

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 faire regex.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