asp - asp.net - aspcode.it

COMMUNITY - Login
 Username:
 
 Password:
 
Voglio registrarmi!
Password dimenticata?
 Utenti on-line: 0
 Ospiti on-line: 7839
ASPCode.it - Store

  > > Articoli

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. per carattere ("character matching")
  2. per numero di ricorrenze ("repetition matching")
  3. per posizione ("position matching")

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:
  • "cassa"  ---------------->  nessuna stringa "forte"
  • "cassaforte"  ---------->  una stringa "forte"
  • "cassaforteforte"  ---->  più di una stringa "forte" (improbabile) :-)

3. Position Matching

Ultimo tipo di ricerca delle R.E. è quello per posizione. Questo particolare tipo si avvale di due caratteri speciali:
  • Il carattere di elevamento a potenza: "^"
  • Il simbolo del dollaro: "$"
Esaminiamo il seguente esempio:

^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:
  • "cassaforte"
  • "cassapanca"
ma non per esempio:
  • "grancassa"
  • "incassare"
Il simbolo dollaro "$" indica un'azione esattamente speculare alla precedente, ossia restituisce la sottostringa soltanto se questa si trova alla fine della stringa di appartenenza:

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!




Utenti connessi: 7839