Регулярные выражения в замене: простое руководство с семью рецептами
Регулярное выражение, или regex, — это шаблон, записанный несколькими символами. В инструменте «Поиск и замена» включите «Регулярные выражения», и поле «Поиск» будет читать шаблон, а не обычный текст: точка означает любой символ, а не саму точку. Для большинства полезных шаблонов хватает нескольких символов. Для обычных слов выключайте «Регулярные выражения», потому что тогда каждый символ воспринимается буквально.
Поиск и заменаЗаменить слово во всём текстеСделать бесплатноСимволы, которые нужны
| Символ | Совпадает с |
|---|---|
| . | любой один символ, кроме разрыва строки |
| * | предыдущий элемент ноль или более раз |
| + | предыдущий элемент один или более раз |
| ? | предыдущий элемент один раз или ни одного |
| [ ] | один символ из списка, например [aeiou] или [0-9] |
| \d \w \s | цифру; букву, цифру или подчёркивание; пробел, табуляцию или разрыв строки |
| ( ) | группу, которую «Замена» может использовать как $1, $2 и так далее |
| ^ и $ | начало и конец всего текста |
Заглавные буквы обращают класс: \D — любой не-цифра, а \S — любой не-пробельный символ.
Две заметки относятся к этому инструменту. Во-первых, \w совпадает только с латинскими буквами, цифрами и подчёркиванием. Для букв с диакритикой используйте \p{L}, которое совпадает с буквой любого алфавита. Во-вторых, ^ и $ соответствуют началу и концу всего текста, а не каждой строки. Рецепты ниже вместо этого используют разрыв строки внутри шаблона.
Группы и $1
Возьмите часть шаблона в скобки, и инструмент запомнит, что она нашла. В поле «Замена» $1 — первая группа, $2 — вторая, а $& — всё совпадение. В справке самого инструмента есть классический пример: если в поле «Поиск» стоит (\w+)@(\w+), а в поле «Замена» — $2 at $1, то текст name@site превращается в site at name. Группы работают только при включённых «Регулярных выражениях». Если они выключены, $1 вводится как обычный текст.
Шаблон по шагам
Начните с точного текста, который нужно найти, а изменяющиеся части замените символами. Дату вроде 2026-11-04 можно записать так: \d{4}-\d{2}-\d{2}, где {4} означает ровно четыре вхождения предыдущего элемента. Сначала проверьте простую версию и усложняйте шаблон, только если подсветка показывает, что он захватывает слишком много.
Если хотите увидеть, что делает шаблон сам по себе, ничего не меняя, Тестер регулярных выражений проверит его на образце текста и покажет каждое совпадение.
Семь рецептов
Для каждого рецепта включите «Регулярные выражения». Перед копированием инструмент подсвечивает совпадения и показывает их количество, поэтому сначала проверьте каждый рецепт на копии своего текста.
- Поменять местами имя и фамилию. Поиск:
(\w+) (\w+), замена:$2, $1. «Ada Lovelace» превращается в «Lovelace, Ada». Для имён с диакритическими знаками используйте(\p{L}+) (\p{L}+). Такой шаблон работает только с именами из двух слов. - Удалить пробелы в конце строк. Поиск:
[ \t]+(?=\r?\n|$), поле «Замена» оставьте пустым. Шаблон находит пробелы или табуляции, которые стоят непосредственно перед разрывом строки или концом текста. Просмотр вперёд(?=...)проверяет разрыв, не удаляя его, а\r?учитывает переносы строк Windows. Исправление вставленного текста содержит опцию «Обрезать пробелы в каждой строке», которая делает то же самое. - Сократить двойные пробелы. Поиск:
{2,}— пробел, повторённый два или более раз, поле «Замена» — один пробел. Два и более пробелов превращаются в один. Заодно уменьшаются отступы, поэтому для кода этот рецепт не подходит. - Добавить префикс к каждой строке. Поиск:
(.+), поле «Замена»:- $1. Каждая последовательность из одного или более символов между разрывами строк — это строка, а $1 её содержит. Пустые строки пропускаются. Используйте форму «один или более»,.+, а не «ноль или более», потому что вариант «ноль или более» также совпадает с пустыми местами между разрывами строк, и тогда у пустых строк появляется лишнее тире. - Удалить пустые строки. Поиск:
\n\s*(?=\n), поле «Замена» оставьте пустым. Совпадение — это разрыв строки и любые пробельные символы после него, до следующего разрыва строки; сам следующий разрыв сохраняется. Так удаляются пустые строки, в том числе содержащие только пробелы. Поскольку\sтакже совпадает с возвратами каретки, переносы строк Windows тоже обрабатываются. Пустая строка в самом начале текста остаётся. Инструмент Удаление повторяющихся строк имеет опцию «Удалять пустые строки», которая делает то же самое одной галочкой. - По одному элементу в строке. Поиск:
,[ ]*, замена:\n, и отметьте «Читать \n и \t в замене». «яблоки, груши, сливы» превращается в три строки. Без этой отметки \n остаётся двумя символами: обратной косой чертой и буквой n. - Заключить каждое число в квадратные скобки. Поиск:
\d+, замена:[$&]. «Заказ 42 и 7» превращается в «Заказ [42] и [7]». $& — всё совпадение, поэтому группа не нужна.
Проверка перед копированием
- Количество совпадений и подсветка показывают, что поймал шаблон. Если подсветка неверна, будет неверным и результат.
- Ошибочный шаблон выводит под полями сообщение «Недопустимый шаблон». Исправьте шаблон, и результат обновится.
- Оставьте поле «Замена» пустым, чтобы удалить все совпадения. Подсказка в поле это подтверждает.
- «Учитывать регистр» по умолчанию выключено, поэтому рецепты совпадают с заглавными и строчными буквами одинаково. Включите его, когда регистр важен.
- Чтобы найти точку или скобку как обычный символ при включённых «Регулярных выражениях», поставьте перед ними обратную косую черту: \. или \[.
Особые случаи
- Жадные совпадения.
.+захватывает столько, сколько может. Чтобы остановиться на первом совпадении, добавьте знак вопроса:.+?. Это важно для текста вроде<b>.+</b>, который может захватить несколько тегов. - Целые слова. Для обычного слова безопаснее выключить «Регулярные выражения». Опция «Только целые слова» не даёт слову cat совпасть внутри category, как объясняется в справке инструмента. В руководстве по поиску и замене есть больше примеров замены целых слов.
- Исходный текст сохраняется. Результат появляется в отдельном поле, а исходный текст остаётся без изменений. Когда всё устроит, скопируйте результат.
Переведено с помощью ИИ с Английский оригинал.
Комментарии
Комментариев пока нет. Будьте первым.


