В этом уроке мы познакомимся с понятием квантификации и научимся находить повторяющиеся символы с ее помощью.
Квантификация — это поиск последовательностей. Квантификатор — это специальный ограничитель, который указывает количество возможных повторений символа, группы символов или класса символов, находящихся в регулярном выражении перед ним. Давайте разберемся, что это все значит.
Посмотрим на пример с простейшим квантификатором — символом ?
. Он обозначает «поиск совпадений с повторением от ноля до одного раза»:
/colou?
/
colr, colo
r, colou
r, colou
ur, colou
uur
В этом выражении нет группировки или символьного класса, поэтому квантификатор ?
задает повторение для символа 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
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.