2010-04-23 10 views

risposta

14

È possibile utilizzare re.search anziché re.match.

Sembra anche che tu non abbia davvero bisogno di espressioni regolari qui. La tua espressione regolare 123.35 probabilmente non fa ciò che ti aspetti perché il punto corrisponde a qualsiasi cosa.

Se questo è il caso, è possibile eseguire il contenimento di stringhe semplici utilizzando x in s.

+0

sì, il tuo è 5 secondi più veloce in realtà, +1 – YOU

12

Usa re.search o semplicemente usare in if l in temp:

Nota: tipo built-in list non dovrebbe essere in ombra, così for l in lists: è meglio

+0

Dovrei essere d'accordo per la semplice sottostringa di corrispondenza 'in' è molto più facile di re.search. – fantabolous

0

È possibile farlo con un assegno un po 'più complessa usando map e 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 

Non sono sicuro se questo è più veloce di un regexp compilato.

Problemi correlati