Je suis en train de mettre en place une expression régulière assez complexe. Une partie de l'expression correspond à des chaînes telles que '+a', '-57', etc. Un + ou un - suivi de n'importe quel nombre de lettres ou de chiffres. Je veux faire correspondre 0 ou plusieurs chaînes correspondant à ce modèle.
Voici l'expression à laquelle je suis arrivé:
([\+-][a-zA-Z0-9]+)*
Si je devais chercher la chaîne '-56+a' en utilisant ce modèle, je m'attendrais à obtenir deux correspondances:
+a et -56
Cependant, je n'obtiens que la dernière correspondance renvoyée:
>>> m = re.match("([\+-][a-zA-Z0-9]+)*", '-56+a')
>>> m.groups()
('+a',)
En regardant la documentation Python, je vois que:
Si un groupe correspond plusieurs fois, seule la dernière correspondance est accessible:
>>> m = re.match(r"(..)+", "a1b2c3") # Correspond 3 fois. >>> m.group(1) # Renvoie uniquement la dernière correspondance. 'c3'
Donc, ma question est : comment accédez-vous à plusieurs correspondances de groupe?