Поиск и замена текста с необязательным регулярным выражением
Замените каждое совпадение за один проход, буквально или с помощью регулярного выражения JavaScript.
Инструмент загружается здесь. Требуется JavaScript, потому что работа происходит на вашем устройстве.
Ваши файлы и ваша конфиденциальность
Поиск, замена и текст, к которому они применяются, остаются на этой вкладке браузера.
Ничего не загружается и ничего не сохраняется автоматически, поэтому файл конфигурации или блок исходного кода
Вставленный сюда код не оставляет копии после перезагрузки страницы или выбора «Очистить данные».
Что делает этот инструмент
Найдите блок текста и замените все совпадения одновременно с помощью необязательных регулярных выражений.
чувствительность к регистру и совпадение целых слов. О недопустимом шаблоне сообщается в виде сообщения и
ваш текст остается нетронутым.
Он находит каждое вхождение искомого термина, заменяет их все за один проход и
сообщает, сколько замен было произведено. Три переключателя меняют способ чтения термина: Regex
воспринимает его как регулярное выражение, а не как буквальные символы. Учет регистра включен
по умолчанию и может быть отключена, а для целого слова требуется граница слова на каждом конце, чтобы
поиск кошачьих листьев объединяется в одиночку. Шаблон, который не компилируется, выдает ошибку
сообщение и никаких изменений вообще, что важно, потому что наполовину набранный шаблон — это нормальный шаг
в сторону рабочего.
Как его использовать
Вставьте текст в поле, затем введите поисковый запрос и замену в два поля.
поля.
Оставьте Regex выключенным, чтобы термин соответствовал буквально; каждый специальный символ в нем экранируется,
поэтому точка соответствует точке и ничему больше.
Включите Regex, когда вам понадобится шаблон, и используйте $1, $2 и т. д. в замене, чтобы
ссылайтесь на свои группы захвата.
Выберите «Заменить все» и прочтите полученное количество. Если это не то, что ты
ожидаемого, выберите «Отменить» и уточните шаблон.
Примеры использования
Замена переименованного домена, названия продукта или переменной во вставленном файле.
Переформатирование столбца дат с использованием шаблона группы захвата, превращение 2024-01-02 в
02/01/2024.
Замена слова, не затрагивая более длинные слова, которые его содержат, с использованием целого слова.
соответствие.
Поддерживаемый ввод и вывод
Принимает
Обычный текст в редакторе, а также поисковый запрос и строка замены.
Переписанный текст в том же поле, с сделанным количеством замен.
Загружаемый файл text.txt или текст, скопированный в буфер обмена.
Чего этот инструмент не сделает
Заменить все — единственное действие: ни замены одного, ни перехода по совпадениям, ни
подчеркивание того, что должно измениться. Запустите его и прочитайте счетчик или отмените.
Используются только два флага: глобальный всегда и регистронезависимый при очистке регистра.
чувствительная коробка. Не существует флага многострочного, многоточечного, закрепленного или юникода, а также JavaScript.
не имеет встроенного синтаксиса флагов, поэтому начало шаблона (?m) отклоняется как недопустимая группа.
Без многострочного флага ^ и $ скорее привязываются к началу и концу всего текста.
чем каждая строка, а точка не соответствует разрыву строки.
Защита улавливает шаблоны, которые не компилируются, а не медленные шаблоны. Тот, который
Backtracks катастрофически по-прежнему работает в основном потоке и может заблокировать вкладку.
Замена охватывает весь текст; нет возможности ограничить его выделением, строкой
диапазон или первые несколько совпадений.
Распространенные ошибки
Ставим знак доллара в замену и ожидаем, что это будет буквально. Замена
строка никогда не экранируется, даже в буквальном режиме, поэтому $& вставляет совпадающий текст и $$
выдает один знак доллара — если вы имеете в виду один, напишите $$.
Включение параметра «Целое слово» для термина, содержащего ударение или пунктуацию. Границы слов
основаны на ASCII, поэтому поиск по запросу cafe или (cat) с параметром Whole word ничего не соответствует и
сообщает о нулевых заменах, а не об ошибке.
Использование свойства Unicode позволяет избежать шаблона. Без флага Юникода \p{L} нет
означает «любую букву» — она соответствует буквальным символам p{L}, поэтому замена выполняется
где-то, чего вы никогда не планировали.
Привязка с помощью ^ для префикса каждой строки. Оно соответствует только самому началу текста, поэтому
производится ровно одна замена, а все остальные строки остаются в покое.
Технические примечания
В буквальном режиме каждый метасимвол регулярного выражения в поисковом запросе экранируется.
перед компиляцией, поэтому он может соответствовать только самому себе; в режиме регулярного выражения термин передается через
как написано. Целое слово переносит все, что вы получаете в \b(?:…)\b, как группу без захвата, поэтому
чередование, такое как кошка|собака, ограничено как целое, а не привязывает границу к
его первый филиал. Компиляция происходит внутри защиты, которая вместо этого возвращает значение ошибки.
броска, и собственное сообщение движка передается без двойного префикса.
Подсчет ведется путем сопоставления перед заменой, затем запускается стандартная замена строки
— именно поэтому замена учитывает $1 на $9, $& и $$ в обоих режимах: только
сторона поиска экранирована.
Часто задаваемые вопросы
Какой вариант регулярного выражения он использует?
Собственный файл JavaScript, скомпилированный движком используемого вами браузера. Написанные шаблоны
для других вариантов — классы PCRE, Python или POSIX, такие как [:alpha:] — либо завершится ошибкой
чтобы скомпилировать или сопоставить что-то другое.
Группы захвата работают при замене?
Да, в режиме регулярного выражения. Найдите (\d{4})-(\d{2})-(\d{2}) и замените на $3/$2/$1, чтобы переписать
2024-01-02 как 02/01/2024. Число за пределами групп в вашем шаблоне остается буквальным.
текст.
Что произойдет, если мое регулярное выражение окажется недействительным?
Вы получаете сообщение движка, объясняющее, что случилось, например, незавершенная группа,
и ваш текст останется таким, каким он был. Ничего не выбрасывается, ничего не очищается, и вы
можете продолжать редактировать шаблон.