<Precedenti | Contenuti | Succ.>
{ } - Abbina un elemento un numero specifico di volte
. { e } I metacaratteri vengono utilizzati per esprimere il numero minimo e massimo di corrispondenze richieste. Possono essere specificati in quattro modi possibili:
Tabella 19-3: Specifica del numero di corrispondenze
Specificatore Significato
Specificatore Significato
{n} Corrisponde all'elemento precedente se si verifica esattamente n volte.
{n,m} Corrisponde all'elemento precedente se si verifica almeno n volte, ma non più di m volte.
{n,} Corrisponde all'elemento precedente se si verifica n o più volte.
{,m} Corrisponde all'elemento precedente se non si verifica più di m volte.
Tornando al nostro esempio precedente con i numeri di telefono, possiamo usare questo metodo di specifica delle ripetizioni per semplificare la nostra espressione regolare originale da:
^\(?[0-9][0-9][0-9]\)? [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]$
di:
^\(?[0-9]{3}\)? [0-9]{3}-[0-9]{4}$
Proviamolo:
[io@linuxbox~]$ eco "(555) 123-4567" | grep -E '^\(?[0-9]{3}\)? [0- 9]{3}-[0-9]{4}$'
(555) 123-4567
[io@linuxbox~]$ eco "555 123-4567" | grep -E '^\(?[0-9]{3}\)? [0-9]
{3}-[0-9]{4}$'
555 123-4567
[io@linuxbox~]$ eco "5555 123-4567" | grep -E '^\(?[0-9]{3}\)? [0-9
]{3}-[0-9]{4}$'
[io@linuxbox~]$
[io@linuxbox~]$ eco "(555) 123-4567" | grep -E '^\(?[0-9]{3}\)? [0- 9]{3}-[0-9]{4}$'
(555) 123-4567
[io@linuxbox~]$ eco "555 123-4567" | grep -E '^\(?[0-9]{3}\)? [0-9]
{3}-[0-9]{4}$'
555 123-4567
[io@linuxbox~]$ eco "5555 123-4567" | grep -E '^\(?[0-9]{3}\)? [0-9
]{3}-[0-9]{4}$'
[io@linuxbox~]$
Come possiamo vedere, la nostra espressione rivista può convalidare correttamente i numeri sia con che senza parentesi, rifiutando al contempo i numeri che non sono formattati correttamente.