ePrometeusCorsoLinuxLinux
testi articoli
Testi Articoli  Download
Home | Introduzione | Panoramica | Form | Analisi Log | 
CorsoJava è ora Video! Free for all!
Clicca Qui!
Tutorial Perl
PRIMI PASSI CON IL PERL
Un esempio patico
IL LINGUAGGIO
VARIABILI E TIPI DI DATO
ESPRESSIONI REGOLARI
Le espressioni regolari del Perl.
BUILT-IN, LIBRERIA STANDARD ED ESTENSIONI
I moduli standard di libreria inclusi col Perl 5.001.
CONCLUSIONI


<<< Le espressioni regolari del Perl. >>>
\ Quota il carattere successivo
^ Matcha l'inizio della linea
. Matcha qualsiasi carattere (eccetto il newline)
$ Match la fine della linea
| Alternative
() Raggruppamento
[] Classi di caratteri

* Matcha 0 o più volte
+ Matcha 1 o più volte
? Matcha 1 o 0 volte
{n} Matcha esattamente n volte
{n,} Matcha almeno n volte
{n,m} Matcha almeno n volte ma non più di m volte

\w Matcha un carattere "word" (alfanumerici e "_")
\W Matcha un carattere "non-word"
\s Matcha un carattere di spazio bianco
\S Matcha un carattere non di spazio bianco
\d Matcha un carattere numerico
\D Matcha un carattere non numerico

Abbiamo detto che il perl è un linguaggio molto versato per l'elaborazione di testo. Questo è dovuto al fatto che le stringhe sono un tipo di dato primitivo, alla interpolazione di stringhe e alle potenti espressioni regolari che fanno parte integrante del linguaggio. In un certo senso le espressioni regolari sono l'arma segreta dei programmatori Perl: sono molto comuni in Unix (molti comandi le utilizzano), ma in Perl sono allo stato dell'arte.

Le espressioni regolari sono espressioni che descrivono stringhe. L'operazione principale che si fa su una espressione regolare è il "matching", cioè la verificano della corrispondenza (il "match") di una stringa con una espressione regolare. Per esempio l'espressione regolare /p.p*o/ matcha una stringa che comincia per "p" seguita da un carattere qualsiasi (il "." matcha una occorrenza di qualsiasi carattere) seguito da una sequenza di 0 o più p ("p*": lo "*" è un iteratore del carattere precedente". Le "/" sono solo delimitatori dell'espressione regolare. Quindi "poppo", "pipo" matchano, mentre "piippo" no.

Le espressioni regolari sono utilizzate come argomento da alcuni operatori. Uno è l'operatore di matching puro, "m" appunto, che restituisce vero o falso a seconda se l'espressione regolare ha matchato oppure no. Ma abbiamo anche l'operatore "s" di sostituzione che sostituisce la stringa matchata da un'espressione regolare con un'altra, e l'operatore di translazione "tr" che sostituisce singoli caratteri: li abbiamo visti nell'esempio che conta le parole.

E' molto utile la possibilità di "catturare" singole parti dell'espressione regolare matchata. Per esempio:

$_=`date`;
m/\w+ (\w+) (\d+) (\d+):(\d+):\d+ \w+ \w+ (\d+)/;
print "Sono le ore $3 e $4 minuti del $2 $1 $5\n";

Dopo aver letto la data, la si assegna a $_ (il backtick ("`") esegue un comando e ne "cattura" l'output). Il comando "date" produce un output di questo tipo:

Tue Apr 16 06:10:11 MET DST 1996

L'espressione regolare esamina questo output e ne estrae alcuni pezzi ("\w" matcha caratteri alfabetici, mentre "\d" matcha caratteri numerici). Le parti dell'espressione matchata racchiuse tra parentesi nell'espressione regolare sono assegnate alle variabili $1, $2, e così via. Quindi dopo aver effettuato il parsing si stampa il risultato in un formato più leggibile utilizzando l'interpolazione di stringhe.

ePrometeus s.r.l. - Web Software House & Open Source System Integrator
MILANO - SAN BENEDETTO DEL TRONTO(AP)
Contatti: info@eprometeus.com