Download Documentazione FAQ Aiutaci!!!
Parte precedente Parte successiva Indice degli articoli

Let's Do It!

Passiamo ora all'utilizzo pratico di ciò che abbiamo appreso. Le RE si possono compilare in oggetti istanza tramite compile(), che ha come argomenti il pattern ed eventuali opzioni di compilazione opzionali.

Le Opzioni di Compilazione

Le opzioni di compilazione permettono di modificare alcuni aspetti del funzionamento delle RE. Possono essere indicati con un nome esteso o con un'abbreviazione costituita da una sola lettera.

Eccone un elenco (tra parentesi l'abbreviazione):

DOTALL (S)
fa sì che `.' corrisponda a un qualsiasi carattere, newline compresi, altrimenti, come già detto, corrisponderebbe a un qualsiasi carattere eccetto newline;

IGNORECASE (I)
rende i confronti non sensibili alle maiuscole, quindi a es.[a-z] equivarrà a [a-zA-Z];

LOCALE (L)
rende i confronti sensibili a locale, nel caso il sistema sia configurato propriamente permetterà corrispondenze con lettere particolari a esempio nelle sequenze /w;

MULTILINE (M)
abilita la corrispondenza multilinea, viene modificato il comportamento di ^ e $ (si veda il paragrafo ad essi dedicato).

VERBOSE (X)
abilita le RE prolisse, che possono essere organizzate meglio e rese più comprensibili grazie a spazi bianchi e commenti preceduti da #.

Si veda la Library Reference per maggiori dettagli.

I Metodi disponibili per la Ricerca

Innanzitutto non è necessario compilare le RE: il modulo re fornisce anche le funzioni corrispettive dei metodi (in effetti tali funzioni non fanno altro che compilare la RE e chiamare i metodi corrispondenti). Vale la pena di usare direttamente le funzioni solo nel caso si tratti di RE isolate e non ripetute (tra l'altro le RE usate in tal modo vengono tenute in una cache in modo da non dover essere ricompilate al volo alla prossima invocazione). Di solito è molto più comodo e pulito costruire l'oggetto istanza tramite compile.

I metodi principali sono match e search. In cosa si differenziano?

match
restituisce un'istanza di MatchObject se zero o più caratteri all'inizio della stringa corrispondono al pattern. È comunque possibile specificare una posizione da cui iniziare la ricerca diversa dalla testa della stringa, e anche un limite superiore). Restituisce None se la stringa non corrisponde al pattern.

search
scandisce la stringa cercando una corrispondenza con il pattern e restituisce l'istanza MatchObject corrispondente. Restituisce None se in nessuna posizione la stringa corrisponde al pattern. Anche qui è possibile specificare un punto d'inizio e di termine per la ricerca come per match.

Altri Metodi

Si veda la Library Reference per informazioni complete!

split
in breve divide la stringa secondo le occorrenze del pattern e restituisce le porzioni ottenute come lista.

escape
prende in ingresso una stringa e la restituisce con i caratteri alfanumerici protetti da barre oblique inverse.

sub
restituisce la stringa ottenuta sostituendo alle occorrenze non sovrapposte del pattern l'entità rimpiazzo, che può essere una stringa o una funzione, eventualmente per un numero di volte prefissato.

Qualche esempio val più di mille parole:

>>> import re
>>> pat = re.compile('[a-z]*[1-3]+')
>>> print pat
<SRE_Pattern object at 7d7ce4>
si noti che non è più il RegexObject citato nell'HOWTO, che si potrebbe ancora ottenere importando pre
>>> stringa = "a12"
>>> risultato = pat.match(stringa)
>>> print risultato
<SRE_Match object at b0a590>
>>> print risultato.group()
a12
>>>
group è un metodo di MatchObject che restituisce in questo caso la stringa che corrisponde al pattern, in realtà le cose sono più complesse, si veda la Library Reference per i gruppi e le relative notazioni.

To be continued!



Parte precedente Parte successiva Indice degli articoli