Darmowy hosting online dla stacji roboczych

<Poprzedni | Spis treści | Następne>

? - Dopasuj element zero lub jeden raz

Ten kwantyfikator oznacza w efekcie „Uczyń poprzedni element opcjonalnym”. Załóżmy, że chcemy sprawdzić numer telefonu pod kątem ważności i uznaliśmy, że numer telefonu jest ważny, jeśli odpowiada jednej z tych dwóch form:

(nnn) nnn-nnnn nnn nnn-nnnn

gdzie "n” jest cyfrą. Moglibyśmy skonstruować takie wyrażenie regularne:

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

W tym wyrażeniu po nawiasach umieszczamy znaki zapytania, aby wskazać, że należy je dopasować zero lub jeden raz. Ponownie, ponieważ nawiasy są normalne


metaznaki (w ERE), poprzedzamy je ukośnikami odwrotnymi, aby zamiast tego traktować je jako literały.

Spróbujmy:



[ja@linuxbox ~]$ echo "(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

[ja@linuxbox ~]$ echo "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

[ja@linuxbox ~]$ echo „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]$'

[ja@linuxbox ~]$

[ja@linuxbox ~]$ echo "(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

[ja@linuxbox ~]$ echo "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

[ja@linuxbox ~]$ echo „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]$'

[ja@linuxbox ~]$


Widzimy tutaj, że wyrażenie pasuje do obu form numeru telefonu, ale nie pasuje do formy zawierającej znaki inne niż numeryczne.


Najlepsze przetwarzanie w chmurze dla systemu operacyjnego w OnWorks: