<Precedenti | Contenuti | Succ.>
* - Abbina un elemento zero o più volte
Come ? metacarattere, il * è usato per indicare un elemento facoltativo; tuttavia, a differenza del ?, l'elemento può comparire un numero qualsiasi di volte, non una sola. Supponiamo di voler verificare se una stringa è una frase; ovvero, inizia con una lettera maiuscola, poi contiene un numero qualsiasi di lettere maiuscole e minuscole e spazi, e termina con un punto. Per far corrispondere questa (molto approssimativa) definizione di frase, potremmo usare un'espressione regolare come questa:
[[:superiore:]][[:superiore:][:inferiore:] ]*\.
L'espressione è composta da tre elementi: un'espressione tra parentesi contenente l' [:superiore:] classe di caratteri, un'espressione tra parentesi contenente sia [:superiore:] e [:inferiore:] classi di caratteri e uno spazio, e un punto preceduto da una barra rovesciata. Il secondo elemento è seguito da un * metacarattere, in modo che dopo la lettera maiuscola iniziale nella nostra frase, qualsiasi numero di lettere maiuscole e minuscole e spazi possa seguirla e comunque corrispondere:
[io@linuxbox~]$ echo "Funziona." | grep -E '[[:upper:]][[:upper:][
:inferiore:] ]*\.'
Funziona.
[io@linuxbox~]$ echo "Funziona." | grep -E '[[:upper:]][[:upper:][
:inferiore:] ]*\.'
Funziona.
[io@linuxbox~]$ echo "questo non" | grep -E '[[:upper:]][[:upper:
][:inferiore:] ]*\.'
[io@linuxbox~]$
[io@linuxbox~]$ echo "Funziona." | grep -E '[[:upper:]][[:upper:][
:inferiore:] ]*\.'
Funziona.
[io@linuxbox~]$ echo "Funziona." | grep -E '[[:upper:]][[:upper:][
:inferiore:] ]*\.'
Funziona.
[io@linuxbox~]$ echo "questo non" | grep -E '[[:upper:]][[:upper:
][:inferiore:] ]*\.'
[io@linuxbox~]$
L'espressione corrisponde ai primi due test, ma non al terzo, poiché non presenta il carattere maiuscolo iniziale e il punto finale richiesti.