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

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

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

Регулярные выражения представляют собой специальную текстовую строку, которая задает шаблон поиска (от английского pattern) с использованием тех символов, которые нужно найти, и специальных символов.

Для наглядности шаблонные строки с регулярными выражениями в примерах этого курса мы будем располагать сверху, а строки, в которых мы производим поиск — снизу. Рекомендуем самостоятельно "прогонять" все примеры в онлайн-редакторах регулярных выражений: regex101, regexr или иных.

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


/java

java \ python ruby1.9 javascript c#


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

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


/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#


Полезные ссылки

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

Хекслет

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