В этом уроке мы познакомимся с понятием квантификации и научимся находить повторяющиеся символы с ее помощью.
Квантификация — это поиск последовательностей. Квантификатор — это специальный ограничитель, который указывает количество возможных повторений символа, группы символов или класса символов, находящихся в регулярном выражении перед ним. Давайте разберемся, что это все значит.
Посмотрим на пример с простейшим квантификатором — символом ?. Он обозначает «поиск совпадений с повторением от ноля до одного раза»:
/colou?/
colr, color, colour, colouur, colouuur
В этом выражении нет группировки или символьного класса, поэтому квантификатор ? задает повторение для символа u. Еще он обозначает, что предшествующий ему символ u:
- Либо не будет участвовать в совпадении (то есть повторится ноль раз)
 - Либо будет участвовать без повторений (то есть повторится один раз)
 
В итоге мы получим четыре совпадения.
А в этом примере дополним шаблонную строку символом r. И у нас будет лишь два совпадения:
/colou?r/
colr, color, colour, colouur, colouuur
Используем группировку и символьный класс — и у нас уже иные сопоставления:
- В случае с группировкой — проверка вхождения всей группы ноль или один раз
 - В случае с символьным классом — проверка вхождения ноль или один раз одного из символов, но не всех одновременно
 
Посмотрим, как это работает:
/col(ou)?r/
colr, color, colour, colouur, colouuur
/col[ou]?r/
colr, color, colour, colouur, colouuur
Еще один квантификатор — символ +. Предшествующий ему символ, группа или класс символов, должны встречаться как минимум один раз. Так и происходит. Здесь слово color уже не сопоставляется:
/colou+r/
colr, color, colour, colouur, colouuur
Символ * говорит об отсутствии повторений или о повторении один или несколько раз. Так мы получаем совпадение во всех подстроках, кроме colr:
/colou*r/
colr, color, colour, colouur, colouuur
Есть более точные квантификаторы, которые записываются в фигурных скобках {}. Достаточно указать в них необходимое число повторений:
/colou{2}r/
colr, color, colour, colouur, colouuur
Кроме того, в фигурных скобках {} можно указать диапазон повторений. Например, от двух до трех:
/colou{2,3}r/
colr, color, colour, colouur, colouuur
Если мы не укажем конец диапазона, то максимальное количество повторений не будет ограничено:
/colou{1,}r/
colr, color, colour, colouur, colouuur, colouuuur, colouuuuur
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.