web-dev-qa-db-fra.com

Python indicateur global RegEx

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)
22
Metsavaht

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

42
Mariy

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.

0
Mars Landis