Espressioni regolari: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m →Tipi di espressioni regolari: link improbabile |
tabelle |
||
Riga 19:
Nota che ogni lettera può corrispondere ad un'espressione regolare.
'''TODO''' definire precedenza degli operatori * | concatenzione formalmente.
{|{{prettytable}}
!Espressione
!Significato
|-
|abc
|abc (concatenazione di stringhe)
|-
|(e)
|e (operatore per definire precedenza)
|-
|<nowiki>(a|b)</nowiki>
|a oppure b
|-
|a*
|a ripetuto 0 o più volte
|-
|a?
|a ripetuto 1 o più volte
|}
====Esempi di precedenza====
{|{{prettytable}}
!Espressione
!Significato
|-
|aa*
|(a)(a*)
|-
|aa|bb
|(aa)|(bb)
|-
|aa|bb*
|(aa)|((bb)*)
|}
===Estensioni delle regole===
{|{{prettytable}}
!Espressione
!Significato
|-
|a+
|a ripetuto 1 o più volte
|-
|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
{|{{prettytable}}
!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)
==Esempi==
La maggior parte delle espressioni regolari riconosce insiemi di stringhe con cardinalità infinita, per questo il più delle volte verrano elencate solo alcune delle stringhe riconosciute
{|{{prettytable}}
!Espressione
!Stringhe riconosciute
|-
|^[^ ]*
|la prima parola di una riga
|-
|^.*$
|una riga intera
|-
|<nowiki>(.|\n){20,20}</nowiki>
|una stringa di esattamente 20 caratteri
|}
==(F)lex e le espressioni regolari==
==Bibliografia==
* J.E. Hopcroft, R. Motwani, J.D. Ullman
|