Y a-t-il un indicateur ou une clé spéciale dans python pour utiliser le modèle plusieurs fois. J'ai utilisé pour tester http://gskinner.com/RegExr/ mon RegExp, il mais lors d'un test dans un environnement correct, la correspondance ne renvoie que Aucune .
import re
pattern = r"(?P<date>--\d\d-\w+:\d\d)[ \t]+(?P<user>\w+)[ \t]+(?P<method>[\w ]+)[\" ]* (?P<file>[\w\\:\.]+)@@(?P<version>[\w\\]+)[\" ]*(?P<labels>[\(\w, \.\)]+){0,1}[\s \"]*(?P<comment>[\w \.-]+){0,1}[\"]"
base = """
--02-21T11:22 user3 create version "W:\foo\bar\fooz.bat@@\main\1" (label1, label2, label3, label22, label33, ...)
"merge in new bat-based fooz installer"
--02-21T11:22 user1 create version "W:\foo\bar\fooz.bat@@\main\0"
--02-21T11:22 user2 create branch "W:\foo\bar\fooz.bat@@\main\"
"merge in new bat-based fooz installer"
--02-13T11:22 user1 create version "W:\foo\bar\fooz.bat@@\main\1"
"Made to use new fooz.bat"
"""
r = re.match(pattern, base)
print(r)
re.match
essaie de faire correspondre le modèle au début de la chaîne. Tu recherches re.search
, re.findall
ou re.finditer
Chacune des fonctions de correspondance des expressions régulières Python) est utile à différentes fins.
re.match
commence toujours au début de la chaîne.
re.search
parcourt la chaîne depuis le début à la recherche de la première correspondance. Il s'arrête lorsqu'il trouve une correspondance.
re.findall
renvoie une liste de toutes les correspondances de recherche.
Dans tous les cas ci-dessus, s'il y a un groupe dans le motif d'expression régulière, l'élément que vous récupérez est un tuple de la correspondance complète suivi de chaque correspondance de groupe dans l'ordre dans lequel ils apparaissent dans le motif d'expression régulière.