28.05.2013 Views

LOA HackLab - Autistici

LOA HackLab - Autistici

LOA HackLab - Autistici

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!