Регулярные выражения — группы и замена
Предыдущий: синтаксис с нуля.
Следующий: проверки вокруг совпадения.
Группы в RegExp - круглые скобки и захват
Круглые скобки делают две вещи:
- Группируют — квантификатор действует на весь блок:
(ab)+→ab,abab, … - Захватывают — движок запоминает, какой текст попал внутрь, под номером 1, 2, 3…
Без скобок ab+ означает «a и один или больше символов b» (abbb), а не повтор пары ab.
Захват — разбор телефона
Текст:
Звоните: +7 916 555-12-34
Шаблон:
\+7\s(\d{3})\s\d{3}-\d{2}-\d{2}
| Часть | Значение |
|---|---|
\+7 | плюс и семёрка |
\s | пробел |
(\d{3}) | группа 1 — три цифры (код) |
\s\d{3}-\d{2}-\d{2} | остальной номер без отдельного захвата |
В коде после совпадения: группа 1 = 916. Остальное видно в полном совпадении, но не в отдельной «ячейке».
Чтобы захватить все блоки:
\+7\s(\d{3})\s(\d{3})-(\d{2})-(\d{2})
| Группа | Содержимое |
|---|---|
| 1 | 916 |
| 2 | 555 |
| 3 | 12 |
| 4 | 34 |
Альтернатива | — «или»
| выбирает левую или правую часть (часто на уровне целых кусков, не одной буквы).
(cat|dog)
Найдёт cat или dog.
\b(INFO|WARN|ERROR)\b
Уровни лога как отдельные слова.
(Т|т)елефон
Заглавная или строчная «Т» в начале слова.
Приоритет: (T|t)he|car — либо The/the, либо car. Скобки задают границы: The|the|car.
Обратная ссылка \1, \2
\1 — «тот же текст, что попал в группу 1».
Строка:
повтор повтор в тексте
Шаблон:
\b(\w+)\s+\1\b
| Часть | Значение |
|---|---|
\b | граница слова |
(\w+) | группа 1 — слово |
\s+ | пробелы |
\1 | то же слово, что в группе 1 |
\b | конец слова |
Найдёт повтор повтор.
В замене в редакторе VS Code/Cursor: $1 или \1 (зависит от движка) подставляет захваченный фрагмент.
Замена в редакторе
Задача: из 2026-01-22 сделать 22.01.2026.
- Поиск (regex):
(\d{4})-(\d{2})-(\d{2})
- Замена (пример для VS Code):
$3.$2.$1
| Группа | Захват |
|---|---|
| 1 | 2026 (год) |
| 2 | 01 (месяц) |
| 3 | 22 (день) |
В строке замены $3.$2.$1 подставляются день, месяц, год. Результат: 22.01.2026.
В лаборатории режим Замена и пресет Дата показывают именованные группы: $<year> в .NET-стиле.
Именованные группы
В .NET и JavaScript (современные движки):
(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})
Замена: $<day>.$<month>.$<year>.
Имена удобнее, когда групп много и легко перепутать $3 с $4.
Незахватывающая группа (?: ...)
Иногда скобки нужны только для повторения или для |, а запоминать текст не нужно.
(?:https?://)[^\s]+
| Часть | Значение |
|---|---|
(?:https?://) | http:// или https://, без захвата |
[^\s]+ | адрес до пробела |
Так массив групп в коде остаётся короче.
Подробнее о связке с проверками — в 1113.
Валидация и извлечение — в чём разница
| Цель | Типичный шаблон |
|---|---|
| «Строка целиком — email?» | ^....@....\....$ |
| «Найти все email в абзаце» | те же куски без ^ $ или с границами \b |
Пример поиска в тексте:
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
Пример проверки поля формы (упрощённо):
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
Практика — строка лога
2026-01-22 14:30:05 [ERROR] Connection timeout
Шаблон:
^(\d{4}-\d{2}-\d{2})\s+(\d{2}:\d{2}:\d{2})\s+\[(\w+)\]\s+(.+)$
| Группа | Поле |
|---|---|
| 1 | дата |
| 2 | время |
| 3 | уровень |
| 4 | сообщение |
Потренируйтесь в лаборатории — пресет Строка лога.
Дальше: Проверки вокруг совпадения →
См. также
Другие статьи этого же раздела в боковом меню (как на странице «О разделе»). Последовательности действий для решения задач. Введение в алгоритмы. Примеры из реальной жизни для понимания, как на самом деле выглядят алгоритмы в программировании. Регулярные выражения — шаблон для поиска и проверки текста. Введение, лаборатория и маршрут обучения для новичков. Как читать шаблон слева направо — литералы, точка, классы символов, квантификаторы, якоря. Разбор логина по частям. Опережающие и ретроспективные проверки (lookahead, lookbehind), несколько условий для пароля, цена после знака доллара. Флаги i, m, g и аналоги в .NET; жадные и ленивые квантификаторы; почему .* захватывает слишком много. Готовые шаблоны для логов, email, URL, IP; grep, ripgrep, sed; типичные ошибки и различия движков. Универсальный алгоритм обработки - инициализация, загрузка, реакция, логика. Если вы начнёте какой-нибудь курс изучать, вероятнее всего как раз затронете в одной из первых тем алгоритмы сортировки и поиска. Оценка времени и памяти. Алгоритмическая сложность и анализ эффективности программ. Таким образом, нотация Большое O — это не только инструмент для теоретиков, но и практический ориентир для принятия архитектурных решений в самых разных областях разработки. P, NP, экспоненциальное время. Скорость работы программ.Алгоритмы
Тренировка алгоритмического мышления
Регулярные выражения
Регулярные выражения — синтаксис с нуля
Регулярные выражения — проверки вокруг совпадения
Регулярные выражения — флаги и жадность
Регулярные выражения — рецепты и командная строка
Алгоритм обработки
Алгоритмы сортировки и поиска
Анализ эффективности алгоритмов
Нотация Большое O
Классы временной сложности алгоритмов