Imparare le Espressioni regolari in 10 minuti!
Inviato da Domenico Dibello il 17 Aprile 2008
Ci sono dei “piccoli particolari” che fanno la differenza tra un programmatore degno di questo nome e uno smanettone, un informatico scrive codice organizzato in oggetti, pulito, leggibile, riusabile al contrario di ciò che farebbe uno smanettone che butterebbe giù una serie di righe di codice ingrovigliato in stile “spaghetti”. Una caratteristica ci fa comprendere la bravura di chi ha scritto il codice: l’eleganza. L’eleganza è non usare 20 righe di codice quando ne basterebbe soltanto una! Gli smanettoni non usano le “regular expressions” i programmatori “seri” SI!
Esistono due tipi di Regex o Espressioni regolari, quelle POSIX e quelle PCRE. Anche se Posix dovrebbe rappresentare lo standard, di fatto le Espressioni PCRE sono quelle utilizzate da tutti i linguaggi più diffusi e tra l’altro sono più veloci da eseguire.
Vediamo alcuni esempi in linguaggio PHP, ma l’espressione regolare utilizzata è la stessa per tutti i linguaggi. Le cose da tener presente sono che:
| Un’espressione regolare inizia e termina con un separatore (di solito il carattere / ) |
| Un metacarattere va fatto seguire di solito da un iteratore |
| I caratteri ( ) [ ] < > . * ? sono caratteri speciali, diventano comuni caratteri solo se seguiti dal simbolo \ |
| Tra parentesi quadre è possibile creare dei pattern più complessi, per esempio [0-5] indica un carattere tra 0 e 5. Il pattern [0-3a-z] indica un numero da 1 a 3 seguito da una lettera |
| \d | Numeri da 0 a 9, abbreviazione di [0-9] |
| \D | Tutto tranne numeri, abbreviazione di [^0-9] |
| \w | Qualsiasi carattere alfanumerico o underscore (_) |
| \W | Qualsiasi carattere che non sia alfanumerico o underscore |
| \s | Qualsiasi whitespace (spazio, tab, newline ecc.) |
| \S | Qualsiasi NON whitespace |
| . | Qualsiasi carattere tranne il newline |
Ognuno di questi caratteri può ripetersi più volte, perciò va seguito da un iteratore:
| ? | Occorre 0 o 1 volta |
| * | Occorre 0 o più volte |
| + | Occorre 1 o più volte |
| {n} | Occorre n volte |
| {,n} | Occorre al più n volte |
| {m,} | Occorre al meno m volte |
| {m,n} | Occorre tra m ed n volte |
Alcuni esempi elementari di Regex:
| /…./ | Parola di 4 caratteri |
| /[a-z]+/ | Parola formata solo da lettere alfanumeriche lunga 1 o più caratteri |
| /\d{1,5}/ | Un numero formato da 1 a 5 cifre |
| /\(.*\)/ | Una parentesi aperta, 0 o più caratteri e una parentesi chiusa |
| /(bianco|nero)/ | La parola bianco o la parola nero |
| /[a-z0-9]+/i | Riconosce solo parole di almeno 1 carattere formate da lettere e numeri, la i posto dopo l’ultimo separatore indica che non c’è distinzione tra maiuscole e minuscole |
Esempio 1: Riconoscere un indirizzo email in PHP
1 2 3 4 5 6 7 8 9 | $soggetto = "webmaster@itbazar.org"; if(preg_match("/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}/i",$soggetto)) { echo "Email valida"; } else { echo "Email NON valida"; } |
Esempio 2: Riconoscere un numero di cellulare (contiene solo i prefissi più diffusi)
1 2 3 4 5 6 7 8 9 | $soggetto = "3291234567"; if(preg_match("/(328|329|333|339|347|340)\d{7}/",$soggetto)) { echo "Numero di cellulare valido"; } else { echo "Numero di cellulare NON VALIDO"; } |
Esempio 3: Estrarre il Body di una pagina HTML
1 2 3 4 5 6 7 8 9 | $soggetto = "<html><head>Header della pagina</head><body>Questo e' il Body della pagina..</body></html>"; if(preg_match("/\<body\>.*?\<\/body\>/i",$soggetto,$riconosciuti)) { echo "Body: $riconosciuti[0]"; } else { echo "Nessun body trovato"; } |
Potete trovare maggiori informazioni sulle Regex Perl Compatibili (PCRE) e sulle funzioni PHP che ne fanno uso sulla guida ufficiale PHP
Funzioni che utilizzano PCRE
Guida completa alle sintassi e alle funzioni PHP con PCRE
Pubblicato in Guide, ITbazar, Linux, Php, Tutorial, Webmaster | Nessun Commento »







Bene, procediamo nell’affascinante mondo della programmazione Server Side, adesso vedremo come ottenere il classico “Hello World” cioè un’applicazione che stampa un messaggio a video. Muniamoci di un qualsiasi editor di testo, meglio ancora se è un editor PHP. Io personalmente utilizzo Kate, l’editor di KDE, dopo aver ritoccato un po sfondo e colori della sintassi.