Общие квантификаторы

Квантификатор в шаблоне обозначает некоторое количество повторений предшествующего элемента. Мы уже видели три квантификатора *, + и ?. Если ни один из них не подходит для ваших целей, используйте разделенные запятыми пары чисел в фигурных скобках ({}), определяющие минимальное и максимальное количество повторений. Скажем, шаблон /a{5,15}/ обозначает от 5 до 15 повторений буквы a. Если a повторяется три раза, этого недостаточно, и совпадение не обнаруживается. Если a повторяется пять раз, шаблон совпадет. При 10 повторениях оно по-прежнему остается. Если буква a повторяется 20 раз, совпадут только первые 15 вхождений, то есть верхний предел.

Если опустить второе число (но указать запятую), максимальное количество совпадений элемента не ограничивается. Таким образом, /(fred){3,}/ совпадет с тремя и более повторениями fred подряд (не разделенными дополнительными символами вроде пробелов). Верхнего предела не существует; если строка содержит 88 повторений fred, шаблон совпадет с ними всеми. Если опустить не только верхнюю границу, но и запятую, число в фигурных скобках будет определять точное количество повторений: /\w{8}/ совпадет ровно с восемью символами слова (например, являющимися частью большей строки)… А /,{5}chameleon/ совпадет с «запятая запятая запятая запятая запятая chameleon».


Вообще говоря, три квантификатора, которые мы рассматривали ранее, представляют собой обычные сокращения. Звездочка означает то же, что {0,} (т. е. нуль и более); плюс эквивалентен {1,} (один и более); наконец, вопросительный знак можно записать в виде {0,1}. На практике квантификаторы в фигурных скобках используются редко, поскольку трех сокращенных квантификаторов оказывается достаточно.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Perl на эту тему:
Автоматические переменные совпадения
Границы слов
Добавление пропусков (/x)
Другие модификаторы
Жизненный цикл переменных частичных совпадений