Comment puis-je obtenir les positions de début et de fin de tous les matchs à l'aide du re
module? Par exemple, étant donné le modèle r'[a-z]'
et la chaîne, 'a1b2c3d4'
je voudrais obtenir les positions où il trouve chaque lettre. Idéalement, j'aimerais aussi récupérer le texte du match.
112
Réponses:
la source
start()
peut accepter un numéro de groupe, donc si vous voulez un index du nième groupe, utilisezstart(n)
Pris à partir de
HOWTO sur les expressions régulières
Combinez cela avec:
Dans Python 2.2, la méthode finditer () est également disponible, renvoyant une séquence d'instances MatchObject en tant qu'itérateur.
vous devriez pouvoir faire quelque chose de l’ordre de
la source
re.search(r'abbit', "has abbit of carrot").span(0)
-(4, 9)
span()
est comme le «stop» dans la notation de tranche de Python en ce sens qu'il va jusqu'à mais n'inclut pas cet index; voir ici .Pour Python 3.x
Vous obtiendrai
\n
tuples (séparés comprenant des premier et derniers indices du match, respectivement) et le match lui - même, pour chaque coup dans la chaîne.la source
notez que la plage et le groupe sont indexés pour plusieurs groupes de capture dans une expression régulière
la source
4
?