Regex, queste sconosciute
Posted by k8 - Articolo di Falcon. June 9, 2008, 10:58 am
IProgrammatori.it

Iniziamo subito a parlare delle regex.Cosa sono?Le regex,in inglese "Regular expression",sono un insieme di regole sintattiche attraverso le quali possiamo rappresentare insiemi di stringhe. Queste sono del tutto uguali alle regole della grammatica italiana,e vengono detti linguaggi regolari ed utilizzati in campo informatico sugli automi a stati finiti.Vengono utilizzati in molti linguaggi di programmazione per appunto,verificare la validità delle informazioni acquisite dall'utente. Le regole che seguono le regex sono identiche per qualsiasi linguaggio a cui queste si interfacciano,cambia notevolmente la sintassi con cui queste vengono implementate nei programmi.Il PHP segue una sua sintassi,l'ASP un'altra,e via discorrendo.In questa breve miniguida analizzeremo la sintassi del Java. Ho solo preso le più importanti regole grammaticali per l'implementazione delle Regex (sito Java Util Regex)


Characters
x The character x
\\ The backslash character
\0n The character with octal value 0n (0 <= n <= 7)
\0nn The character with octal value 0nn (0 <= n <= 7)
\0mnn The character with octal value 0mnn (0 <= m <= 3, 0 <= n <= 7)
\xhh The character with hexadecimal value 0xhh
\uhhhh The character with hexadecimal value 0xhhhh
\t The tab character ('\u0009')
\n The newline (line feed) character ('\u000A')
\r The carriage-return character ('\u000D')
\f The form-feed character ('\u000C')
\a The alert (bell) character ('\u0007')
\e The escape character ('\u001B')
\cx The control character corresponding to x

Character classes
[abc] a, b, or c (simple class)
[^abc] Any character except a, b, or c (negation)
[a-zA-Z] a through z or A through Z, inclusive (range)
[a-d[m-p]] a through d, or m through p: [a-dm-p] (union)
[a-z&&[def]] d, e, or f (intersection)
[a-z&&[^bc]] a through z, except for b and c: [ad-z] (subtraction)
[a-z&&[^m-p]] a through z, and not m through p: [a-lq-z](subtraction)


Allora andiamo con ordine: in Java per poter utilizzare le regular expression bisogna importare il package:

 

 java.util.regex.*; //può essere serializzato


Fatto questo bisogna definire un Pattern cioè quell'insieme di regole su citate quindi scriviamo:

 

 Pattern p=Pattern.compile(regola);
Matcher m=p.matcher(stringa);
boolean b=m.matches();

 


Spiego subito quello che si è andato a fare in queste tre righe di codice:
Si è definito un pattern con la regola che ci serve,ad esmpio [a-z]che serve,appunto per poter accettare caratteri minuscoli che vanno da 'a' a 'z' estremi inclusi.Fatto questo con la riga "Matcher m=p.matcher(stringa)"si definisce appunto dove questa sequenza di caratteri deve essere cercata e con l'ultima opzione viene effettuato un confronto e restituito un valore booleano che indicherà l'esito dello stesso.Un'altro metodo sintattico per le regex si trova nel metodo matcher che può ricevere la stringa Regex e la sequenza di dati,quindi utilizzata come segue:

 

boolean b=Pattern.matches(regex, input);

 


Restituirà sempre un valore booleano indicativo per il confronto avvenuto.
Ovviamente è possibile definire un'infinità di regole sintattiche a seconda del controllo che il programmatore deve effettuare.
L'introduzione di questa sintassi è utilissima ed è ad alto potenziale perchè permette al programmatore la possibilità di controllare il flusso di dati nel programma senza che si scriva una grande mole di codice,basiti pensare al semplice controllo della validità di un indirizzo e-mail(nome@provider.it/com/net)..quindi...questa notevole scoperta ha semplificato e sta semplificando la vita dei programmatori!
Per ulteriori informazioni e/o delucidazioni vi rimando al sito della sun dove troverete maggiori informazioni a riguardo Pagina Sun.


Condividi
Stats
Voti 1
Voto medio 3
Visite 8508
Visite uniche 7686
Num.Download 0
DownloadNon disponibile.
Spazio Visitatori
Prima di inviare il tuo commento assicurati che:
  • sia in tema con l'articolo e contribuisca alla discussione in corso
  • non abbia contenuti offensivi nei confronti di chicchessia
  • non abbia contenuti che violini le leggi italiane
  • non contenga indirizzi e-mail








Vota Pessimo 1 / 5 Migliorabile 2 / 5 Buono 3 / 5 Interessante 4 / 5 Speciale  5 / 5
Non ci sono commenti.
Tag Cloudregex java × Regular expression java ×

Advertisement

Iprogrammatori.it
| I contenuti di questo sito sono rilasciati sotto Licenza Creative Commons |