2010-10-17 6 views
3

normalement, nous utilisons correspondance d'expression régulière de gauche à droite direction, je veux savoir est-il un commutateur peut correspondre de la droite vers la gauche en python? ou dans tout autre langage a cette caractéristique intégréeà propos de python expression régulière match de droite direction

par exemple.

abcd1_abcd2

si donner une expression régulière abcd, il correspondra à deux abcd, ce que je veux est de mettre le dernier match au premier dans un match de sens inverse

+0

Quel commutateur et ce qui était dans * normalement *? –

+5

Qu'est-ce qui vous empêche d'inverser la liste résultante? – SilentGhost

+1

En général, la raison pour laquelle vous faites correspondre de droite à gauche (au moins dans .NET) est pour des raisons de performance, et non pour renvoyer une liste de correspondances à l'envers. par exemple, si vous avez une expression très compliquée qui peut entraîner beaucoup de retours en arrière, mais votre match se termine par une simple chaîne 'XYZ' alors l'analyseur éliminera beaucoup de traitement gaspillé en travaillant en arrière et en recherchant XYZ en premier. –

Répondre

2

Vous pouvez inverser la liste proposée par @ SilentGhost:

import re 

for s in reversed(re.findall('abcd.', 'abcd1_abcd2')): 
    print s 
+0

en fait j'ai besoin d'utiliser finditer, mais c'était une expression de rendement, donc j'utilise [pour trouver dans finditer (obj)] [:: -] à la place – mlzboy

Questions connexes