Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
78 C5 Regular Expressions<br />
6.4 Un carattere solitario<br />
Fra i caratteri con significato particolare ne esiste uno particolarmente utile: il punto (“.”).<br />
Questo carattere rappresenta un qualsiasi carattere; è in un certo senso l’astrazione stessa<br />
del concetto di carattere. Consente di specificare una posizione libera da vincoli di qualità<br />
ma obbligata nella quantità. Se volessimo individuare tutte le stringhe di testo composte<br />
dalla lettera “a” e da un qualsiasi altro carattere potremmo impiegare la semplice:<br />
/a./<br />
Tuttavia la vera versatilità del “.” si ha in accoppiamento con i quantificatori. Tornando<br />
al quesito del punto precedente, come è possibile indicare una sequenza di lunghezza<br />
indefinita di caratteri qualsiasi? Semplice:<br />
Tanto basta per risolvere il problema. 5<br />
/.*/<br />
6.5 Caratteri di Classe<br />
Dopo avere buttato così tanto Lego per terra, è ora di trovare una scatola adeguata dove<br />
riporlo. Disponendo i mattoncini in buon ordine è più facile capire quanti ce ne sono per<br />
tipo e come è possibile usarli. Non siamo impazziti e non abbiamo deciso di convertire il<br />
corso in un salone di edilizia danese. Abbiamo solo cercato di trovare un’efficace metafora<br />
delle classi di caratteri.<br />
Una classe di caratteri è un insieme di caratteri (speciali o normali) racchiusa fra parentesi<br />
quadre. Da un punto di vista posizionale, essa occupa lo stesso spazio di un carattere. Da<br />
un punto di vista qualitativo essa rappresenta una via di mezzo fra un carattere esplicito<br />
(es. /a/) e un punto (/./). Facciamo subito un esempio.<br />
Ammettiamo di voler trovare tutte le occorrenze delle stringhe di testo “ab”, “ac” e<br />
“ad”. Le classi di caratteri ci forniscono un modo per condensare tre regexpr in una e al<br />
contempo escludere tutti i caratteri indesiderati. Infatti:<br />
/a./<br />
troverebbe anche stringhe come “az”, “a5” o perfino “a ” (a-spazio). Invece la più<br />
precisa:<br />
/a[bcd]/<br />
consente di descrivere inequivocabilmente le tre stringhe cercate.<br />
Vediamo qualche uso creativo delle classi di caratteri. Abbiamo visto all’inizio che<br />
/Corso di UNIX/ e /corso di UNIX/ sono due regexpr completamente distinte. Come<br />
5 Complimenti! Avete appena letto la vostra prima regexpr completamente priva di lettere o<br />
numeri! Se avvertite un senso di nausea o vertigine, potrete utilizzare il sacchetto di cartone<br />
che trovate sotto le vostre poltrone. La RegExprAir vi augura un buon proseguimento.