.: HosiriS :.

Informatica e non solo

Riconoscimento di pattern testuali, ovvero usare le espressioni regolari

Posted by hosiris su maggio 21, 2010

Quello delle espressioni regolari è un argomento tanto importante quanto trascurato, ma noi, baldi giovani non saremo così stupidi da tralasciarlo.
Di certo non volgio avere la presunzione di trattare in maniera approfondita l’argomento, ma voglio creare una sorta di vademecum delle regole più usate.
PHP ci permette di usare due tipologie di espressioni regolari: POSIX e PERL compatibili. Io tratterò le prime e le funzioni ad essa annesse.

Nella costruzione del modello ci sono una serie di regole da seguire, prima fra tutte quella che riguarda i cosìddetti “metacaratteri“, ossia dei caratteri speciali, nel senso che, all’interno di un’espressione regolare, assumono un preciso significato. Questi caratteri sono:

  • . che indica qualsiasi carattere (escluso un acapo)
  • * che indica zero o più occorrenze
  • ? che indica zero o una occorrenza
  • {} le parentesi graffe, che indicano il numero esatto, o minimo, o massimo, o l’intervallo di occorrenze
  • + che indica una o più occorrenze
  • ^ che indica l’inizio della stringa (o, se all’interno di una classe di caratteri, la negazione della stessa)
  • $ che indica la fine della stringa
  • | che indica l’operatore OR
  • \ il carattere di escape dei caratteri speciali
  • () le parentesi tonde, destinate a contenere una sottostringa
  • [] le parentesi quadre, destinate a contenere una ‘classe’ di caratteri

Caratteristica comune a tutti questi metacaratteri è che se vogliono essere usati per il loro “valore letterale”, devono essere preceduti da un backslash (\), per cui, ad esempio, l’esistenza di un punto interrogativo all’interno di una stringa, potrebbe essere accertata con questa espressione: \?.
Facciamo degli esempi per capire subito come tutto questo può essere applicato:

[abc]: questo pattern viene verificato quando è presente una delle tre lettere;
[0-9]: verificato quando è presente un qualsiasi numero compreso nel range da 0 a 9;
[A-Z]: verificato quando è presente una lettera maiuscola compresa nel range da A a Z;
[0-9a-z]: verificato quando è presente o una lettera minuscola nel range o un numero compreso nel range;
[abc]?: verificato quando una delle lettere è presente 0 o 1 volta;
[abc]*: verificato quando una delle lettere è presente 1 o più volte;
[^0-9]: verificato quando non sono trovati numeri;
[a-b]{1,5}: verificato quando una delle lettere è presente da 1 a 5 volte;
(casa): verificato quando è trovata l’intera sottostringa

Combinando questi esempi è possibile costruire, ad esempio, il modello di riconoscimento di un indirizzo mail:

[a-zA-Z0-9_\.]+@[a-zA-Z0-9-]+\.[a-zA-Z]{2,4}

tramite questo è possibile validare un campo mail, accertandosi che sia stata scritta nella forma corretta.
Le funzioni che PHP mette a disposizione sono: ereg(), ereg_replace() e split().
ereg(): serve a determinare se una data stringa corrisponde al modello;
ereg_replace(): sostituisce all’interno di una stringa tutte le occorrenze del modello con una stringa data.
split(): ha lo stesso funzionamento di explode, ma accetta anche una espressione regolare tramite cui suddivide la stringa.

Tutto qui… se volete approfondire il discorso fate riferimento al manuale di PHP, ma già con queste nozioni dovreste essere capaci di coprire tutti i vostri bisogni.

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

 
%d blogger cliccano Mi Piace per questo: