re.match et re.search

Fonction re.match

Syntaxe :

re.match(pattern, string, flags=0)

re.match essaie de faire correspondre un modèle à partir de la position de départ de la chaîne. Si la correspondance échoue à la position de départ, match() n'en renvoie aucun.

Fonction re.search

Syntaxe :

re.search(pattern, string, flags=0)

re.search analyse la chaîne entière et renvoie la première correspondance réussie. Les paramètres de

re.match et re.search sont fondamentalement les mêmes. La description spécifique est la suivante :

Paramètre Description
modèle L'expression régulière correspondante
string to match La chaîne
flags le bit flag est utilisé pour contrôler la méthode de correspondance des expressions régulières, telles que : si elle est sensible à la casse

Alors, quelle est la différence entre elles ?

re.match correspond uniquement au début de la chaîne. Si le début de la chaîne ne correspond pas à l'expression régulière, la correspondance échoue et la fonction renvoie None tandis que re.search correspond à la chaîne entière jusqu'à ce qu'une correspondance soit trouvée. C'est la différence entre eux.

re.match et re.search sont présentés en détail en ligne, mais pour un usage personnel, j'aime toujours utiliser re.findall

Regardez l'exemple ci-dessous pour comparer re.search et re.findall La différence réside dans l'utilisation du multi-regroupement. Regardez spécifiquement les commentaires et comparez les résultats de sortie :

Exemple :

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
# 提取图片的地址
import re
a = '<img src="https://s-media-cache-ak0.pinimg.com/originals/a8/c4/9e/a8c49ef606e0e1f3ee39a7b219b5c05e.jpg">'
# 使用 re.search
search = re.search('<img src="(.*)">', a)
# group(0) 是一个完整的分组
print(search.group(0))
print(search.group(1))
# 使用 re.findall
findall = re.findall('<img src="(.*)">', a)
print(findall)
# 多个分组的使用(比如我们需要提取 img 字段和图片地址字段)
re_search = re.search('<(.*) src="(.*)">', a)
# 打印 img
print(re_search.group(1))
# 打印图片地址
print(re_search.group(2))
# 打印 img 和图片地址,以元祖的形式
print(re_search.group(1, 2))
# 或者使用 groups
print(re_search.groups())

Résultats de sortie :

<img src="https://s-media-cache-ak0.pinimg.com/originals/a8/c4/9e/a8c49ef606e0e1f3ee39a7b219b5c05e.jpg">
https://s-media-cache-ak0.pinimg.com/originals/a8/c4/9e/a8c49ef606e0e1f3ee39a7b219b5c05e.jpg
['https://s-media-cache-ak0.pinimg.com/originals/a8/c4/9e/a8c49ef606e0e1f3ee39a7b219b5c05e.jpg']
img
https://s-media-cache-ak0.pinimg.com/originals/a8/c4/9e/a8c49ef606e0e1f3ee39a7b219b5c05e.jpg
('img', 'https://s-media-cache-ak0.pinimg.com/originals/a8/c4/9e/a8c49ef606e0e1f3ee39a7b219b5c05e.jpg')
('img', 'https://s-media-cache-ak0.pinimg.com/originals/a8/c4/9e/a8c49ef606e0e1f3ee39a7b219b5c05e.jpg')

Enfin, les expressions régulières sont des outils très puissants et peuvent généralement être utilisées pour résoudre des problèmes qui ne peuvent pas être résolus par la chaîne intégrée. fonctions. Et les expressions régulières sont disponibles dans la plupart des langues. Python a de nombreuses utilisations, mais les expressions régulières sont indispensables dans les modules d'exploration et d'analyse de données. Les expressions régulières sont donc très importantes pour apprendre Python. Enfin, il est livré avec des expressions régulières courantes, des métacaractères d'expressions régulières et des documents de syntaxe pris en charge par Python.

Formation continue
  • Recommandations de cours
  • Téléchargement du didacticiel