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

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

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

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

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

Символьные классы

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

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

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

Рассмотрим принцип работы символьных классов на простом примере. Предположим, что нам нужно найти только буквы алфавита. Для этого можно использовать символьные классы, которые описываются в квадратных скобках, и в нашем случае все буквы английского алфавита в нижнем регистре будут выглядеть так: [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



<span class="translation_missing" title="translation missing: ru.web.courses.lessons.mentors.mentor_avatars">Mentor Avatars</span>

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

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

Для полного доступа к курсу нужна профессиональная подписка

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

Получить доступ
115
курсов
892
упражнения
2241
час теории
3196
тестов

Зарегистрироваться

или войти в аккаунт

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

  • 115 курсов, 2000+ часов теории
  • 800 практических заданий в браузере
  • 250 000 студентов

Нажимая кнопку «Зарегистрироваться», вы даёте своё согласие на обработку персональных данных в соответствии с «Политикой конфиденциальности» и соглашаетесь с «Условиями оказания услуг». Защита от спама reCAPTCHA «Конфиденциальность» и «Условия использования».

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

Логотип компании Альфа Банк
Логотип компании Rambler
Логотип компании Bookmate
Логотип компании Botmother

Есть вопрос или хотите участвовать в обсуждении?

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

Нажимая кнопку «Зарегистрироваться», вы даёте своё согласие на обработку персональных данных в соответствии с «Политикой конфиденциальности» и соглашаетесь с «Условиями оказания услуг». Защита от спама reCAPTCHA «Конфиденциальность» и «Условия использования».