Espressioni regolari/Tipi di espressioni regolari

Wikibooks, manuali e libri di testo liberi.


Tipi di espressioni regolari[modifica]

Ogni programma che fa uso di espressioni regolari tende a definire un insieme di regole con caratteristiche che variano un po'. Per questo qui si descriverà un insieme di regole abbastanza vasto da essere utile per la maggior parte degli usi.

Descrizione[modifica]

Insieme base di regole[modifica]

Questo è l'insieme minimo di regole accettate da tutti i programmi, ha la stessa capacità espressiva di insiemi di regole più grandi, Nota che ogni lettera può corrispondere ad un'espressione regolare. TODO definire precedenza degli operatori * | concatenzione formalmente.

Espressione Significato
abc abc (concatenazione di stringhe)
(e) e (operatore per definire precedenza)
(a|b) a oppure b
a* a ripetuto 0 o più volte
a? a ripetuto 0 o 1 volta

Esempi di precedenza[modifica]

Espressione Significato
aa* (a)(a*)
bb (bb)
bb* ((bb)*)

Estensioni delle regole[modifica]

Espressione Significato
a+ a ripetuto 1 o più volte

equivale a: (aa*)

a{1,3} a ripetuto da 1 a tre volte

equivale a: (a|aa|aaa)

a{3,} almeno tre a

equivale a: (aaa+)

[abc] uno qualsiasi dei caratteri a, b, o c

Nota che abc non sono espressioni ma singoli caratteri equivale a: (a|b|c)

[0-9] uno qualsiasi dei caratteri nell'intervallo.

L'intervallo è calcolato sui codici ASCII equivalente a:(0|1|2|3|4|5|6|7|8|9)

[^a-z] tutti i caratteri non compresi nell'intervallo

tra la a minuscola e la z minuscola

. tutti i caratteri (di solito è escluso l'a capo \n)

equivalente: troppo lungo da scrivere...

^ inizio riga

equivalente: non esiste

$ fine riga

equivalente: non esiste

Questi ultimi due simboli non hanno un equivalente in termini di regole base. Nota che data la riga (\n indica il carattere di a capo)

riga\n

le due espressioni sono differenti

Espressione Stringa riconosciute
a\n a\n
a$ a

Questo è importante poiché in molte situazioni la stringa riconosciuta può essere letta da un'apposita variabile. (es vim, flex, perl)