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.