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

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

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

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

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


/ [a-z]/

java 11_34-1938 tab

new line


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


/ [0-9]/

java 11_34-1938 tab

new line


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


/ [aj]/

java 11_34-1938 tab

new line


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


/ [^aj]/

java 11_34-1938 tab

new line


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


/ [aj-]/

java 11_34-1938 tab

new line


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

В прошлом уроке мы использовали \ для экранирования. Здесь же он используется как часть обозначения. Давайте найдем в тексте все цифры с помощью обозначения класса цифр \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



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

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

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

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

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

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

Получить доступ
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 апреля

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

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

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

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