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

Символьные классы Регулярные выражения (Regexp)

Конспект урока

В этом уроке мы познакомимся с символьными классами.

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

Рассмотрим принцип работы символьных классов на простом примере. Предположим, что нам нужно найти только буквы алфавита. Для этого можно использовать символьные классы, которые описываются в квадратных скобках, и в нашем случае все буквы английского алфавита в нижнем регистре будут выглядеть так: [a-z]. Мы видим, что символы алфавита в строке подсветились:


/ [a-z]/

java 11_34-1938 tab

new line


Таким же образом можно задать поиск цифр от нуля до девяти:


/ [0-9]/

java 11_34-1938 tab

new line


А в этом примере мы укажем только 2 символа, каждый из которых будет найден:


/ [aj]/

java 11_34-1938 tab

new line


В символьных классах можно использовать механизм, который называется "отрицание". Если мы ставим символ ^ перед первым символом в квадратных скобках, то осуществляется инвертированный поиск и находятся все символы, кроме перечисленных после ^:


/ [^aj]/

java 11_34-1938 tab

new line


Если наряду с буквами алфавита необходимо найти дефис, то нужно лишь указать его в начале или конце группы символов, и тогда он не будет восприниматься как специальный символ:


/ [aj-]/

java 11_34-1938 tab

new line


В регулярных выражениях часто используют специальные предопределенные символьные классы. Они записываются с помощью символа \ и имеют свои обозначения в языке регулярных выражений. В прошлом уроке мы использовали \ как один из escape-символов для экранирования. Здесь же он используется, как часть обозначения. Давайте найдем в тексте все цифры с помощью обозначения класса цифр \d:


/ \d/

java 11_34-1938 tab

new line


Если мы укажем большую D, то в результате поиска получим все остальные символы, в том числе, пробельные и табуляцию.


/ \D/

java11_34-1938tab

new line


Для поиска пробельных символов существует класс \s, а класс \S, в свою очередь, обозначает все непробельные символы. Как мы видим, принцип обозначения символьных классов прост: маленькая буква обозначает класс, а большая — все, что к нему не относится.

Есть ещё один популярный класс \w, который включает в себя все буквы алфавита, все цифры и подчеркивания. В коде ниже не видно, однако пробельные символы не соответствуют этому классу, равно как и -.


/ \w/

java 11_34-1938 tab

new line


Использование класса \w равносильно такой записи: [0-9a-zA-Z_]. Обратите внимание: при поиске в диапазоне символов важен регистр, поэтому в этой записи после a-z следует A-Z.

Соответственно, \W находит инвертированный вариант своей маленькой копии. Здесь уже вместе с дефисом будут найдены и пробельные символы:


/ \W/

java 11_34-1938 tab

new line



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

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

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

Ошибки, сложный материал, вопросы >
Нашли опечатку или неточность?

Выделите текст, нажмите ctrl + enter и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.

Что-то не получается или материал кажется сложным?

Загляните в раздел «Обсуждение»:

  • задайте вопрос. Вы быстрее справитесь с трудностями и прокачаете навык постановки правильных вопросов, что пригодится и в учёбе, и в работе программистом;
  • расскажите о своих впечатлениях. Если курс слишком сложный, подробный отзыв поможет нам сделать его лучше;
  • изучите вопросы других учеников и ответы на них. Это база знаний, которой можно и нужно пользоваться.

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

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

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

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

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

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

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

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

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Фронтенд-разработчик
Профессия
Разработка фронтенд-компонентов веб-приложений
1 июня 10 месяцев
Иконка программы Python-разработчик
Профессия
Разработка веб-приложений на Django
1 июня 10 месяцев
Иконка программы PHP-разработчик
Профессия
Разработка веб-приложений на Laravel
1 июня 10 месяцев
Иконка программы Node.js-разработчик
Профессия
Разработка бэкенд-компонентов веб-приложений
1 июня 10 месяцев
Иконка программы Fullstack-разработчик
Профессия
Новый
Разработка фронтенд и бэкенд компонентов веб-приложений
1 июня 16 месяцев

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

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

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

Даю согласие на обработку персональных данных, соглашаюсь с «Политикой конфиденциальности» и «Условиями оказания услуг»