Суперсила для работы с текстом
Представьте, что вам нужно найти все email-адреса в документе на 1000 страниц. Или проверить, является ли введенный пользователем пароль достаточно сложным. Или найти и заменить все даты в тексте на новый формат. Регулярные выражения (или "regex") — это универсальный язык шаблонов, который решает все эти задачи и многое другое. Вместо того чтобы писать десятки строк кода для парсинга текста, вы можете описать то, что ищете, одной-единственной строкой.
По сути, это последовательность символов, которая задает **шаблон поиска**. Освоив его, вы сможете выполнять сложнейшие текстовые операции в любом языке программирования или текстовом редакторе за доли секунды.
Анатомия Регулярного Выражения
Символы (Литералы)
Самая основа. Символ a
ищет букву "a". Выражение Кот
найдет слово "Кот". Это просто и предсказуемо. Вы строите скелет вашего шаблона из конкретных "кирпичиков", которые должны присутствовать в тексте.
Символьные Классы (Метасимволы)
Мощные сокращения для поиска целых групп символов. \d
находит любую цифру (0-9). \w
— любую букву, цифру или `_`. \s
— любой пробельный символ (пробел, таб, перенос строки). Точка .
— это "джокер", который соответствует абсолютно любому символу.
Квантификаторы (Повторения)
Указывают, **сколько раз** должен повторяться предыдущий элемент. a+
— одна или больше букв "a". a?
— ноль или одна. a*
— ноль или больше. a{3}
— ровно три буквы "a". a{2,5}
— от 2 до 5 букв "a".
Якоря и Границы
Привязывают шаблон к определенной позиции, не являясь частью совпадения. ^
— начало строки. $
— конец строки. \b
— граница слова, чтобы не находить `car` в `carpet`.
Группы и Диапазоны
Скобки (...)
создают "захватывающие группы" для извлечения частей совпадения. Квадратные скобки [a-zA-Z]
позволяют указать любой символ из перечисленного диапазона. Например, [aeiou]
найдет любую гласную.
Флаги
Модификаторы, которые меняют поведение всего выражения. /g
(global) — искать все совпадения, а не только первое. /i
(insensitive) — игнорировать регистр (искать 'a' и 'A'). /m
(multiline) — многострочный режим.