Normalmente, quando si cerca una sottostringa in una stringa, il riscontro deve essere esatto. Così se si cerca una sottostringa "abc" allora la stringa che viene cercata deve contenere queste lettere esatte nella stessa sequenza affinchè sia trovato il riscontro.
Si può estendere questo genere di ricerca per una ricerca non influenzata dal formato Maiuscolo/minuscolo, dove la sottostringa "abc" troverà le stringhe come "Abc", "ABC" e così via. Cioè la forma dei caratteri viene ignorata ma la sequenza delle lettere deve essere esattamente la stessa. A volte una ricerca non influenzata dalla forma dei caratteri non è ancora abbastanza. Per esempio se desideriamo cercare dei numeri, allora la ricerca viene effettuata indipendentemente su ogni cifra. In questi casi le espressioni normali vengono in aiuto.
Le Regular expressions sono delle forme di testo usate per trovare la corrispondenza della stringa. Le espressioni regolari sono stringhe che contengono una combinazione di testo normale e di caratteri speciali per indicare quale tipo di corrispondenza da fare. Questa è una lezione molto breve sull'uso delle le espressioni regolari prima di passare al codice per il trattamento delle espressioni regolari.
Lettere
Tutti i caratteri sono considerati lettere tranne: ".", "*", "?", "+", "(", ")", "{", "}", "[", "]", "^" e "$". Questi caratteri sono considerati letterali quando sono preceduti da una "\". Una lettera è un carattere che riscontra se stessa.
Metacaratteri
Il carattere punto "." individua ogni singolo carattere.
Ripetizioni
Una ripetizione è un'espressione che è ripetuta un numero di volte a piacere.
Un'espressione seguita da * può essere ripetuta per qualunque numero di volte compreso zero.
Un'espressione seguita da + può essere ripetuta per qualunque numero di volte, ma almeno una volta.
Un'espressione seguita da ? può essere ripetuta zero o una volta soltanto.
Quando è necessario specificare esplicitamente il numero minimo e massimo delle ripetizioni, può essere usato l'operatore di limiti {},
così "a{2}" è la lettera "a" ripetuta esattamente due volte, "a{2,4}" rappresenta la lettera "a" ripetuta fra 2 e 4 volte
e "a{2,}" rappresenta la lettera "a" ripetuta almeno due volte senza limite superiore. Fare attenzione perché non ci deve essere un carattere invisibile all'interno di {} e non c'è limite superiore sui valori dei limiti inferiori e superiori.
| Esempi: | |
"ba*" |
individuerà ogni "b", "ba", "baaa", ecc. |
"ba+" |
individuerà, per esempio, "ba" o "baaaa" ma non "b" |
"ba?" |
individuerà "b" o "ba" |
"ba{2,4}" |
individuerà "baa", "baaa" e "baaaa" |
Le parentesi
Le parentesi () sono utilizzate per ragguppare delle voci entro una espressione secondaria. Per esempio, l'espressione "(ab)*" individuerà tutte le stringhe "ababab".
Alternative
Si fa ricorso alle alternative quando l'espressione può confrontare sia una espressione secondaria che un'altra; ogni alternativa è separata da "|". Ogni alternativa estende maggiormente l'espressione secondaria precedente; questo è il comportamento opposto degli operatori di ripetizione.
| Esempi: | |
"a(b|c)" |
può individuare "ab" o "ac" |
"abc|def" |
può individuare "abc" o "def" |
Insiemi
Un insieme è una serie dei caratteri che può individuare ogni singolo carattere che è una parte dell'insieme. Gli insiemi sono delimitati da "[" e "]" e possono contenere lettere, serie di caratteri e categorie di caratteri. Le dichiarazioni di insieme che iniziano con "^" contengono il complemento degli elementi che seguono.
| Esempi: | |
| Caratteri letterali: | |
"[abc]" |
individuerà ciascun carattere "a", "b", o "c" |
"[^abc]" |
individuerà ogni carattere tranne "a", "b", o "c" |
| Serie di caratteri: | |
"[a-z]" |
individuerà ogni carattere nell'intervallo da "a" a "z" |
"[^A-Z]" |
individuerà ogni carattere tranne quelli nell'intervallo da "A" a "Z" |
Categorie di caratteri
Una categoria di caratteri è una sequenza speciale per riunire i tipi di carattere ricorrenti. Le categorie disponibili sono:
| Categoria | Descrizione | Equivalente a |
|---|---|---|
\w |
Qualsiasi carattere di testo - tutti i caratteri alfanumerici più il sottolineamento. | [a-zA-Z_] |
\s |
Qualsiasi carattere invisibile (spazi e tabulazioni). | |
\d |
Qualsiasi cifra. | [0-9] |
\l |
Qualsiasi carattere minuscolo. | [a-z] |
\u |
Qualsiasi carattere Maiuscolo. | [A-Z] |
\Aa, \Ao, \Ai, \Au, \Au |
Ciascuna individuerà più variazioni di carattere usate dagli spammers. \Aa = a, A, à, À, Á, á etc |
[A-Z] |
La versione maiuscola di queste categorie devono intendersi NON, per esempio, \S significa carattere NON spazio, cioè diverso da spazio.
La tabella che segue riassume della sintassi degli elementi usati nelle Regular Expressions.
| Carattere | Descrizione |
|---|---|
^ |
Inizio della stringa. L'espressione "^A" individuerà una "A" soltanto all'inizio della stringa. |
^ |
Il segno (^) subito dopo la parentesi di sinistra ([) ha un significato differente. Viene usato per escludere i caratteri all'interno delle parentesi dall'oggetto cercato. L'espressione "[^0-9]" indica che il carattere cercato non deve essere una cifra. |
$ |
Il segno del dollaro ($) individuerà la fine della stringa. L'espressione "abc$" abbinerà la sottostringa "abc" soltanto se questa è alla fine della stringa. |
| |
Il simbolo di alternativa (|) permette che l'una o la altra espressione sui due lati confronti la stringa da cercare. L'espressione "a|b" abbinerà la "a" così come la "b". |
. |
Il carattere punto (.) individuerà ogni carattere. |
* |
L'asterisco (*) indica che il carattere alla sinistra dell'asterisco nell'espressione deve corrispondere 0 o più volte. |
+ |
Il segno più (+) è simile all'asterisco ma in questo caso nell'espressione deve esserci almeno una corrispondenza del carattere alla sinistra del + segno. |
? |
Il punto interrogativo (?) confronta il carattere alla sua di sinistra 0 o 1 volte. |
() |
Le parentesi influenzano l'ordine di valutazione del modello ed inoltre servono da espressione etichettata che può essere usata quando sostituisce la sottostringa individuata con un'altra espressione. |
[ ] |
Le parentesi quadre ([ e ]) che includono un insieme di caratteri indicano che alcuni dei caratteri inclusi possono individuare il carattere cercato. |
{N} |
Ripete l'espressione esattamente N volte. |
{N, M} |
Ripete l'espressione tra N e M volte. |
{N, } |
Ripete l'espressione N o pù volte. |