[Python] Unione espressioni regolari

Marco Beri marcoberi a gmail.com
Ven 20 Lug 2012 12:29:25 CEST


2012/7/20 Walter Valenti <waltervalenti a yahoo.it>

> Ho una stringa che per essere verificata deve "matchare" due o più pattern
> diversi.
> La proma cosa che i viene in mente è avere diverse reg. expr. e fare la
> verifica con degli AND.
> Es:
> p1=re.compile(pattern1)
> p2=re.compile(pattern2)
> if p1.match(stringa) and p2.match(stringa):
>   ##fai quello che devi.
>  Mi chiedevo: c'è la possibilità di usare usa sola reg. expr. che sia un
> "and" tra i vari pattern ?
>

L'and non esiste, come esercizio di (non)stile si potrebbe usare il
lookaround:
>>> import re
>>> re.match("(?=.*a)(?=.*b)", "xxxxxxxx")
>>> re.match("(?=.*a)(?=.*b)", "xxxaxxxx")
>>> re.match("(?=.*a)(?=.*b)", "xxxaxbxx")
<_sre.SRE_Match object at 0xb6ebcf00>
>>> re.match("(?=.*a)(?=.*b)", "xxxbxxax")
<_sre.SRE_Match object at 0xb72dd218>

Ma io mi terrei l'and come hai fatto tu (tra l'altro puoi anche
cortocircuitare l'espressione per cui se non trovi la prima non cerchi
nemmeno la seconda).

Ciao.
Marco.

-- 
http://beri.it/ - Un blog
http://beri.it/i-miei-libri/ - Qualche libro
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20120720/6e089358/attachment.html>


Maggiori informazioni sulla lista Python