Онлайн-рабочие станции OnWorks Linux и Windows

Логотип

Бесплатный хостинг в Интернете для рабочих станций

<Предыдущая | Содержание: | Следующая>

? - Соответствие нулевому элементу или один раз

Фактически, этот квантификатор означает «Сделать предыдущий элемент необязательным». Допустим, мы хотели проверить номер телефона на действительность и посчитали, что номер телефона действителен, если он соответствует одной из этих двух форм:

(NNN) NNN-нннн ннн ннн-NNNN

где "n»- это числительное. Мы могли бы построить такое регулярное выражение:

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

В этом выражении мы ставим символы круглых скобок с вопросительными знаками, чтобы указать, что они должны быть сопоставлены ноль или один раз. Опять же, поскольку круглые скобки обычно


метасимволы (в ERE), мы ставим перед ними обратную косую черту, чтобы вместо этого они рассматривались как литералы.

Давай попробуем:



[я @ linuxbox ~] $ эхо "(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

[я @ linuxbox ~] $ эхо "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

[я @ linuxbox ~] $ эхо "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]$'

[я @ linuxbox ~] $

[я @ linuxbox ~] $ эхо "(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

[я @ linuxbox ~] $ эхо "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

[я @ linuxbox ~] $ эхо "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]$'

[я @ linuxbox ~] $


Здесь мы видим, что выражение соответствует обеим формам телефонного номера, но не соответствует той, которая содержит нечисловые символы.


Лучшие облачные вычисления для ОС в OnWorks: