Ultimanenteme lavorando al mio progetto in java, sono venuto a conoscenza delle regular expression, uno strumento davvero utile e molto utilizzato da me in precedenza sottovalutato. Ma cosa sono le regular expressions?
Le Regular Expressions o Espressioni Regolari, sono un modo di descrivere un insieme di stringhe con caratteristiche comuni condivise tra di loro. Possone essere utilizzate come strumento di ricerca, modifica o manipolazione di testi o di dati. E’ necessario imparare una sintassi specifica per creare Espressioni Regolari che va oltre la sitassi di Java. Le Espressioni Regolari possono essere semplici o complesse, ma l’importante è capire la base sulla quale si fondano, che risulterà comune a tutte quante anche le più complesse.
La sintassi delle Espressioni Regolari è supportata dalla API java.util.regex . Esistono diverse sintassi per le Espressioni Regolari: grep, Perl, Tcl, Python, PHP, and awk. La sintassi della API java.util.regex è molto simile a quella del Perl.
Il package java.util.regex è composto da tre classi: Pattern, Matcher, e PatternSyntaxException.
caratteri principali da utilizzare per codificare una espressione regolare sono quelli riportati qui sotto. Per ulteriori caratteri visitare i link correlati.
Ecco una semplice classe per far conoscenza con le espressioni regolari.
import java.util.regex.*;
public class BasicMatch {
public static void main(String[] args) {
// Compila l’espressioe regolare
String patternStr = “b”;
Pattern pattern = Pattern.compile(patternStr);
// Determina se il pattern esiste in input
CharSequence inputStr = “a b c b”;
Matcher matcher = pattern.matcher(inputStr);
boolean matchFound = matcher.find(); // true
// Crea la stringa di match
String match = matcher.group(); // b
// Recupera gli indici dove compare la sringa di match
int start = matcher.start(); // 2
int end = matcher.end(); // 3
// la fine è l’indice dell’ultimo carattere trovato + 1
// Cerca la ricorrenza successiva
matchFound = matcher.find(); // true
}
}
| Caratteri | |
|---|---|
| x | Il carattere x |
| \\ | Il carattere backslash |
| \uhhhh | Il carattere con valore esadecimale 0xhhhh |
| \t | Il carattere Tab ('\u0009') |
| \n | Il carattere a capo (line feed) ('\u000A') |
| \r | Il carattere di carriage-return ('\u000D') |
| \f | Il carattere di form-feed ('\u000C') |
| \a | Il carattere alert (bell) ('\u0007') |
| \e | Il carattere escape ('\u001B') |
| Classi di caratteri | |
|---|---|
| [abc] | a, b, o c (classe semplice) |
| [^abc] | Qualsiasi carattere tranne a, b, o c (negazione) |
| [a-zA-Z] | da a a z e da A a Z, comprese (range) |
| [a-d[m-p]] | da a a d, e da m a p: [a-dm-p] (unione) |
| [a-z&&[def]] | d, e, o f (intersezione) |
| [a-z&&[^bc]] | da a a z, tranne b e c: [ad-z] (sottrazione) |
| [a-z&&[^m-p]] | da a a z, e non da m a p: [a-lq-z](sottrazione) |
| Classi di caratteri predefinite | |
| . | Qualsiasi carattere |
| \d | Una cifra: [0-9] |
| \D | Una non-cifra: [^0-9] |
| \s | Un carattere di A spaziatura: [ \t\n\x0B\f\r] |
| \S | Un carattre di non spaziatura: [^\s] |
| \w | Un carattere alfanumerico e sottolineatura: [a-zA-Z_0-9] |
| \W | Un carattere né alfanumerico né di sottolineatura: [^\w] |
per ulteriori informazioni visitate questo link sito completo di esempi:
http://www.regular-expressions.info/















sei sicuro della sintassi delle stringhe??? preferisco di gran lunga le stringhe di liquerizia però. ma grazie guana. devo tutto al tuo programma se una volta sono riuscita a rimorchiare un tizio che parlava solo in codice alfanumerico.
hahaha…..roxa sei unica!!
ciao,
proprio ieri ho iniziato ad usare le regular expression.
in particolare le stavo usando per fare splittare una stringa
lemma.split(“[/.'-&)]“);
il mio problema ora è che uno dei caratteri che deve verificare essere presente nella stringa è proprio [. E ovviamente mi da errore se scrivo lemma.split("[/.'[-&)]“); perché dice che non è chiusa la regula expression.
sai dirmi come fare? grazie
mi rispondo da solo
l’espressione corretta è
lemma.split(“[\\Q[\\E\\Q/'-&).\\E]“);