<Предыдущая | Содержание: | Следующая>
{} - совпадение с элементом определенное количество раз
The { и } метасимволы используются для обозначения минимального и максимального количества требуемых совпадений. Их можно указать четырьмя возможными способами:
Таблица 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}$
Давай попробуем:
[я @ linuxbox ~] $ эхо "(555) 123-4567" | grep -E '^ \ (? [0-9] {3} \)? [0–9] {3} - [0–9] {4} $ '
(555) 123-4567
[я @ linuxbox ~] $ эхо "555 123-4567" | grep -E '^ \ (? [0-9] {3} \)? [0-9]
{3} - [0-9] {4} $ '
555 123-4567
[я @ linuxbox ~] $ эхо "5555 123-4567" | grep -E '^ \ (? [0-9] {3} \)? [0-9
] {3} - [0-9] {4} $ '
[я @ linuxbox ~] $
[я @ linuxbox ~] $ эхо "(555) 123-4567" | grep -E '^ \ (? [0-9] {3} \)? [0–9] {3} - [0–9] {4} $ '
(555) 123-4567
[я @ linuxbox ~] $ эхо "555 123-4567" | grep -E '^ \ (? [0-9] {3} \)? [0-9]
{3} - [0-9] {4} $ '
555 123-4567
[я @ linuxbox ~] $ эхо "5555 123-4567" | grep -E '^ \ (? [0-9] {3} \)? [0-9
] {3} - [0-9] {4} $ '
[я @ linuxbox ~] $
Как мы видим, наше измененное выражение может успешно проверять числа как со скобками, так и без них, отклоняя при этом те числа, которые не отформатированы должным образом.