2010-04-23 3 views

Répondre

14

Vous pouvez utiliser re.search au lieu de re.match.

Il semble également que vous n'avez pas vraiment besoin d'expressions régulières ici. Votre expression régulière 123.35 ne fait probablement pas ce que vous attendez parce que le point correspond à n'importe quoi.

Si tel est le cas, vous pouvez effectuer un confinement de chaîne simple en utilisant x in s.

+0

ouais, le vôtre est 5 secondes plus vite en réalité, +1 – YOU

12

Utilisez re.search ou tout simplement utiliser dans if l in temp:

Remarque: type intégré list ne doit pas être assombris, donc for l in lists: est mieux

+0

Je serais obligé d'accepter la sous-chaîne simple '' '' est beaucoup plus facile que re.search. – fantabolous

0

Vous pouvez faire cela avec un contrôle un peu plus complexe en utilisant map et any.

>>> temp = "[email protected]+" 
>>> lists = ["abc", "123.35", "xyz", "AND+"] 
>>> any(map(lambda match: match in temp, lists)) 
True 
>>> temp = 'fhgwghads' 
>>> any(map(lambda match: match in temp, lists)) 
False 

Je ne suis pas sûr que ce soit plus rapide qu'une expression rationnelle compilée.

Questions connexes