Зарегистрируйтесь, чтобы продолжить обучение

Квантификация Регулярные выражения (Regexp)

В этом уроке мы познакомимся с понятием квантификации и научимся находить повторяющиеся символы с ее помощью.

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

Посмотрим на пример с простейшим квантификатором — символом ?. Он обозначает «поиск совпадений с повторением от ноля до одного раза»:


/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



Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
Верстка на HTML5 и CSS3, Программирование на JavaScript в браузере, разработка клиентских приложений используя React
10 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на Python, Разработка веб-приложений и сервисов используя Django, проектирование и реализация REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на Java, Разработка веб-приложений и микросервисов используя Spring Boot, проектирование REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на PHP, Разработка веб-приложений и сервисов используя Laravel, проектирование и реализация REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на JavaScript в браузере и на сервере (Node.js), разработка бекендов на Fastify и фронтенда на React
16 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на JavaScript, разработка веб-приложений, bff и сервисов используя Fastify, проектирование REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
новый
Git, JavaScript, Playwright, бэкенд-тесты, юнит-тесты, API-тесты, UI-тесты, Github Actions, HTTP/HTTPS, API, Docker, SQL
8 месяцев
c опытом
Старт 26 декабря

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»