Introduzione alle Regular Expression (1/3)
Data di pubblicazione: 04/09/2001
Voto della community: 3,01
(Votanti: 139)
Mutuate dall’ambiente UNIX – dove sono nate e si sono diffuse grazie al Perl – le Regular Expression (che indicherò d’ora in poi con R.E.) sono approdate ormai da tempo anche sulla piattaforma Windows. I linguaggi di scripting introdotti dalla Microsoft – Jscript prima ed ora anche VBScript (dalla versione 5 in poi) – permettono agli sviluppatori ASP (e non solo) di utilizzare questa potente tecnologia che – come vedremo – si presta agli usi più disparati.
Che cosa sono le Regular Expression?
Le R.E. – senza perderci in inutili tecnicismi – permettono di ricercare (e/o sostituire) velocemente una sequenza di caratteri (una sottostringa) in un'altra stringa.
Il confronto e il buon esito della ricerca (in inglese "matching") può avvenire secondo tre modalità:
1. Character Matching
E' il tipo di matching più diffuso: per esempio, stabilito che vogliamo cercare tutte le occorrenze della stringa "gabbia" in un'altra stringa, la nostra R.E. sarebbe semplicemente uguale a:
gabbia Se volessimo invece cercare – oltre a "gabbia" - parole come "rabbia" o "sabbia" dovremmo impostare la nostra R.E. così:.abbia Il punto è un carattere speciale delle R.E. e rappresenta infatti un qualsiasi singolo carattere (eccetto il carattere di ritorno a capo o \n, new line ).E se volessimo cercare solo "rabbia" o "sabbia" ma non "gabbia"? Ecco come andrebbe impostata la R.E. : [rs]abbia Possiamo anche decidere di cercare in un range di valori ben preciso: per esempio, impostando la R.E. così:[r-t]ana cercheremmo soltanto le parole "rana", "sana" o "tana" ma non, per esempio, "vana".2. Repetition Matching
Adesso poniamo il caso che volessimo ricercare tutte le ricorrenze di "amare" e della sua forma contratta poetica "amar".
Come dovremmo impostare la R.E. relativa? Così:
amare? Il punto interrogativo è un altro carattere speciale delle R.E. e il suo significato è strettamente legato al carattere precedente: significa "trovami nessuna o una occorrenza del carattere precedente", in questo caso la "e".L'asterisco (altro carattere speciale) differisce leggermente dal punto interrogativo: letteralmente significa "trovami nessuna o una o più occorrenze del carattere precedente". Quindi, impostando la R.E in questo modo: mare* la ricerca ci ritornerebbe "mar", "mare" o "maree". Possiamo anche "raggruppare" i caratteri su cui ci interessa effettuare la ricerca, es:cassa(forte)* Riferendoci a quanto detto sull'asterisco, questa R.E. potrebbe ritornarci:
3. Position Matching
Ultimo tipo di ricerca delle R.E. è quello per posizione. Questo particolare tipo si avvale di due caratteri speciali:
^cassa Abbiamo appena detto alla R.E. di cercare in una stringa la sottostringa "cassa" e di ritornarci la stringa di appartenenza soltanto se "cassa" occupa le prime 5 posizioni nella stringa (cioè, se si trova all'inizio). Quindi la R.E. – fedele alle nostre direttive – potrebbe restituirci stringhe come:
petto$ restituirebbe infatti "parapetto" o "dispetto" ma non "dispettoso".Nel prossimo articolo vedremo come utilizzare praticamente le R.E. in VBScript con l'ausilio di alcuni esempi concreti e chiarificatori. Vedremo inoltre come con la potenza delle R.E. potremo risparmiare righe e righe di codice rendendo le stesso più leggibile e quindi manutenibile. Alla prossima!
|