Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Представление символов и метасимвол Регулярные выражения (Regexp)

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

Регулярные выражения — это специальная текстовая строка, которая задает шаблон поиска. В шаблоне поиска используются:

  • Символы, которые нужно найти
  • Специальные символы

Чтобы было нагляднее, в этом курсе мы будем использовать такой формат примеров:

  • Сверху — шаблонные строки с регулярными выражениями
  • Снизу — строки, в которых мы производим поиск

Рекомендуем самостоятельно прогонять все примеры в онлайн-редакторах регулярных выражений: regex101, regexr или любых других. Выбирайте движок JavaScript или PCRE для примеров, которые JavaScript не поддерживают.

Для начала зададим шаблон с символами, которые мы хотим найти в строке:


/java/

java \ python ruby1.9 javascript c#


Обратите внимание на символ / — его называют разделитель (delimiter). Его указывают в начале и конце регулярного выражения, чтобы отделить регулярное выражение от остального текста.

Мы видим, что с текстом java сопоставилось два варианта из строки. Такое совпадение называется точным. Мы не использовали специальных символов и нашли в тексте комбинации символов, совпадающие с заданной комбинацией на сто процентов.

Если мы добавим еще один символ, то соответствия уже не будет, потому что такой подстроки в нашей строке нет:


/javab/

java \ python ruby1.9 javascript c#


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


/./

java \ python ruby1.9 javascript c#


В результате подсветилась вся строка.

Теперь попробуем комбинировать символы в шаблонной строке. Поищем совпадения комбинаций любого символа с символом y. В таком случае мы получим два совпадения:


/.y/

java \ python ruby1.9 javascript c#


При комбинировании специальных и обычных символов нужно учитывать особое поведение спецсимволов.

Обратите внимание на пример ниже, где мы задаем в шаблоне символы 1.9. Важно понимать, что они соответствуют не самой комбинации символов 1.9, а всем подстрокам из трех символов, в которых первый символ — 1, а последний — 9.

Таким образом, между этими символами в строке может находиться что угодно:


/1.9/

java \ python ruby1.9 javascript c#

java \ python ruby189 javascript c#

java \ python ruby1k9 javascript c#


Представим, что нам нужно использовать точку как обычный знак препинания, а не как специальный символ в языке регулярных выражений. В таком случае нужно применить экранирование символов с помощью одного из так называемых escape-символов.

Для этого поставим обратный слэш \ перед символом, который мы хотим экранировать. Так спецсимвол перестанет иметь специальное значение. Как видим, все работает. Если вместо точки мы поставим другой символ, наша подстрока не будет совпадать с шаблонной:


/1\.9/

java \ python ruby1.9 javascript c#

java \ python ruby1d9 javascript c#


Точно так же можно экранировать и сам обратный слэш, если нам нужно использовать его в качестве обыкновенного символа. В результате мы увидим следующее совпадение:


/\\/

java \ python ruby1d9 javascript c#



Дополнительные материалы

  1. Регулярные выражения
  2. Cheatsheet — таблица синтаксиса регулярных выражений
  3. Онлайн редактор регулярных выражений

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

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

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

Об обучении на Хекслете

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

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

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

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

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

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

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

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
от 6 300 ₽ в месяц
Разработка фронтенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 25 апреля
профессия
от 6 300 ₽ в месяц
Разработка веб-приложений на Django
10 месяцев
с нуля
Старт 25 апреля
профессия
от 6 300 ₽ в месяц
Разработка приложений на языке Java
10 месяцев
с нуля
Старт 25 апреля
профессия
от 6 300 ₽ в месяц
Разработка веб-приложений на Laravel
10 месяцев
с нуля
Старт 25 апреля
профессия
от 9 900 ₽ в месяц
Разработка фронтенд- и бэкенд-компонентов для веб-приложений
16 месяцев
с нуля
Старт 25 апреля
профессия
от 6 300 ₽ в месяц
Разработка бэкенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 25 апреля

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

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

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

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