Lorsque j'exécute ce code:
print re.search(r'1', '1').groups()
J'obtiens un résultat de ()
. Cependant, .group(0)
me donne la correspondance.
groups()
ne devrait-il pas me donner quelque chose contenant la correspondance?
Mise à jour: Merci pour les réponses. Cela signifie donc que si je fais re.search()
sans sous-groupes, je ai pour utiliser groups(0)
pour obtenir une correspondance?
groups est vide car vous n'avez aucun groupe de capture - http://docs.python.org/library/re.html#re.MatchObject.groups . group (0) renvoie toujours tout le texte qui a été mis en correspondance, qu'il ait été capturé dans un groupe ou non
Édité.
À ma connaissance, .groups()
renvoie un Tuple de groupes mémorisés. C'est à dire. les groupes de l'expression régulière entre parenthèses. Donc, si vous deviez écrire:
print re.search(r'(1)', '1').groups()
vous obtiendriez
('1',)
comme réponse. En général, .groups()
renverra un Tuple de tous les groupes d'objets dans l'expression régulière qui sont placés entre parenthèses.
La raison en est que vous n'avez pas de groupes de capture (puisque vous n'utilisez pas ()
Dans le modèle). http://docs.python.org/library/re.html#re.MatchObject.groups
Et group(0)
renvoie l'intégralité du résultat de la recherche (même s'il ne contient aucun groupe de capture): http://docs.python.org/library/re.html#re.MatchObject.group
Vous n’avez aucun groupe dans votre expression régulière, vous obtenez donc une liste vide (()
) à la suite.
Essayer
re.search(r'(1)', '1').groups()
Avec les crochets que vous créez un groupe de capture, le résultat qui correspond à cette partie du motif est stocké dans un groupe.
Ensuite, vous obtenez
('1',)
à la suite.