Workstation online OnWorks Linux e Windows

Logo

Hosting online gratuito per workstation

<Precedenti | Contenuti | Succ.>

? - Abbina un elemento zero o una volta

Questo quantificatore significa, in effetti, "Rendi facoltativo l'elemento precedente". Supponiamo di voler verificare la validità di un numero di telefono e di considerare valido un numero di telefono se corrisponde a una di queste due forme:

(nnn) nnn-nnnn nnn nnn-nnnn

dove "n" è un numero. Potremmo costruire un'espressione regolare come questa:

^\(?[0-9][0-9][0-9]\)? [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]$

In questa espressione, seguiamo i caratteri delle parentesi con punti interrogativi per indicare che devono essere abbinati zero o una volta. Di nuovo, poiché le parentesi sono normalmente


metacaratteri (in ERE), li facciamo precedere da barre rovesciate per far sì che vengano trattati come letterali.

Proviamolo:



[io@linuxbox~]$ eco "(555) 123-4567" | grep -E '^\(?[0-9][0-9][0-9]

\)? [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]$'

(555) 123-4567

[io@linuxbox~]$ eco "555 123-4567" | grep -E '^\(?[0-9][0-9][0-9]\)

? [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]$'

555 123-4567

[io@linuxbox~]$ eco "AAA 123-4567" | grep -E '^\(?[0-9][0-9][0-9]\)

? [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]$'

[io@linuxbox~]$

[io@linuxbox~]$ eco "(555) 123-4567" | grep -E '^\(?[0-9][0-9][0-9]

\)? [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]$'

(555) 123-4567

[io@linuxbox~]$ eco "555 123-4567" | grep -E '^\(?[0-9][0-9][0-9]\)

? [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]$'

555 123-4567

[io@linuxbox~]$ eco "AAA 123-4567" | grep -E '^\(?[0-9][0-9][0-9]\)

? [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]$'

[io@linuxbox~]$


Qui vediamo che l'espressione corrisponde a entrambe le forme del numero di telefono, ma non a quella contenente caratteri non numerici.


Il miglior sistema operativo cloud computing su OnWorks: