Для сохранения прогресса вступите в курс. Войти или зарегистрироваться.

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

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

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

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


Мы учим программированию с нуля до стажировки и работы. Попробуйте наш бесплатный курс «Введение в программирование» или полные программы обучения по Node, PHP, Python и Java.

Хекслет

Подробнее о том, почему наше обучение работает →