{ } — совпадение с элементом определенное число раз

We use cookies. Read the Privacy and Cookie Policy

Метасимволы { и } используются, чтобы выразить минимальное и максимальное число обязательных совпадений. Эти числа можно представить четырьмя возможными способами, как показано в табл. 19.3.

Таблица 19.3. Определение числа совпадений

Спецификатор

Значение

{n}

Предыдущий элемент соответствует, если встречается точно n раз

{n,m}

Предыдущий элемент соответствует, если встречается не менее n и не более m раз

{n,}

Предыдущий элемент соответствует, если встречается n или более раз

{,m}

Предыдущий элемент соответствует, если встречается не более m раз

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

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

до

^(?[0-9]{3})? [0-9]{3}-[0-9]{4}$

Опробуем его:

[me@linuxbox ~]$ echo "(555) 123-4567" | grep -E '^(?[0-9]{3})? [0-9]{3}-

[0-9]{4}$'

(555) 123-4567

[me@linuxbox ~]$ echo "555 123-4567" | grep -E '^(?[0-9]{3})? [0-9]{3}-[0-9]{4}$'

555 123-4567

[me@linuxbox ~]$ echo "5555 123-4567" | grep -E '^(?[0-9]{3})? [0-9]{3}-

[0-9]{4}$'

[me@linuxbox ~]$

Как видите, измененная версия регулярного выражения успешно справляется с проверкой номеров, с круглыми скобками и без них, и отвергает неправильно оформленные номера.