Я бегаю Toolz.dev и проведите большую часть моей недели в коде плагина WordPress, API-интерфейсах Laravel и интерфейсах React. Найти и заменить - это единственное редактирование, которое я выполняю больше, чем любое другое, и тем не менее девять раз из десяти я не хочу мощную версию этого. Я не хочу регулярного выражения. Я хочу взять фрагмент текста, сказать каждое появление клиента и #39;s старого названия продукта, и заменить его на новое, точно, без случайного символа в моем поисковом термине, соответствующего тому, к чему я никогда не хотел прикасаться. Вот что Инструмент "Найти и заменить" да, и это руководство о том, почему буквальная, скучная версия "найти и заменить" - это та, которую вы хотите большую часть времени.
TL;DR: Этот инструмент делает буквальный поиск и замену над блоком вставленного текста. поисковый термин совпадает точно так же, как введено, поэтому точка соответствует точке и знак доллара соответствует знаку доллара, без выхода и без случайного пересочетания. вы можете добавить несколько правил поиска и замены и применить их за один проход, ограничить совпадения целыми словами и включить или выключить чувствительность к регистру. Он сообщает, сколько замен было сделано каждым правилом. Все работает в вашем браузере, поэтому ничего вы вставляете не загружается. Когда вам действительно нужны подстановочные знаки и группы захвата, регекс-реплейсер является правильным инструментом вместо этого.
Что такое буквальное найти и заменить, и почему & quot;буквальное & quot; имеет значение?
Найти и заменить - это операция поиска каждого появления одной строки и замены ее на другую. Она есть у каждого редактора. что варьируется, так это то, как инструмент интерпретирует ваш поисковый запрос, и этот единственный выбор дизайна решает, поможет ли вам инструмент или незаметно испортит ваш текст.
Есть две школы. реплейсер регулярного выражения рассматривает ваш поисковый термин как шаблон, где определенные символы являются командами: точка означает " любой символ, " звездочка означает "повторение, & quot; знак доллара означает & quot; конец строки, & quot; и скобки, скобки и обратные косые черты - все это несет особое значение. буквальный реплейсер рассматривает ваш поисковый термин как себя, символ для персонажа, без какого-либо особого значения.
Большую часть времени, буквальное это то, что вы хотите, и вот конкретная причина Предположим, вы хотите заменить строку версии 1.0.0 с 2.0.0 в блоке текста. в инструменте regex эти точки являются подстановочными знаками, поэтому ваш поиск также совпадает 1x0y0, 1a0b0, и другие строки, которые вы никогда не предполагали. вам придется уйти от точек как 1\.0\.0 чтобы сделать его безопасным, и если вы забыли, инструмент делает что-то тонко неправильно и не предупреждает вас. В буквальном инструменте, 1.0.0 средство 1.0.0, точки точки точки, и нечего избежать и не в чем ошибиться То же самое верно для цены как $9.99, путь к файлу с обратными косами, или фрагмент кода с скобками в нем Буквальный инструмент обрабатывает все из них, не задумываясь о синтаксисе шаблона, потому что нет синтаксиса шаблона.
Когда вместо этого мне следует использовать регекс-заменитель?
Буквально - это правильный дефолт, но это не правильный ответ на все вопросы, и я бы предпочел сказать вам, где он останавливается, чем притвориться, что это не так. Дотянуться до а инструмент замены Regex когда вещь, которую вы сопоставляете, является формой, а не фиксированной строкой. если вам нужно сопоставлять каждый четырехзначный год, или каждый адрес электронной почты, или каждую строку, которая начинается с хеша, или вы хотите переформатировать сопоставленный текст, вытаскивая из него части с группами захвата, то есть работа с шаблоном и буквальный инструмент не могут этого сделать Тестер регулярного выражения это место, где можно создать и отладить этот шаблон перед его запуском.
Разделительная линия проста. если вы можете точно напечатать то, что вы ищете, используйте буквальный поиск и замену и сохранить себе побег. Если то, что вы ищете, является категорией вещей, которые имеют общую форму, но не точные символы, используйте regex. Большинство повседневных очистка текста является первым видом, поэтому буквальный инструмент охватывает большинство реальных заданий, а инструмент regex покрывает остальное.
| положение | обычай | почему |
|---|---|---|
| Переименовать фиксированное слово или фразу | Буквально найти и заменить | Термин точный; никакой шаблон не нужен |
Поисковый термин, содержащий точки, косые черты или $ |
Буквально найти и заменить | Никакого побега, никаких случайных совпадений с подстановочными знаками |
| За один раз исправить несколько разных терминов | Буквальное нахождение и замена, несколько правил | Каждое правило является точным и применяется по порядку |
| Соответствуйте любому году, форме электронной почты или кода | Регекс заменить | Только шаблон может описать категорию |
| Изменить порядок или переформатировать сопоставленный текст | Регекс заменить | Группы захвата вытаскивают и переставляют фигуры |
| Сопоставление в начале строки или границах слов по правилам | Регекс заменить | Якоря и границы - особенности рисунка |
Как работают несколько правил?
Функция, на которую я опираюсь больше всего, это применение нескольких правил одновременно Реальная очистка редко один своп, Когда я принимаю клиент & #39;s копировать, мне может понадобиться изменить название бренда, исправить две последовательные ошибки написания, и удалить часть шаблон, все в одном блоке текста, Делать это как четыре отдельных прохода утомительно и подвержено ошибкам Инструмент позволяет добавить строку для каждой пары найти-заменить, и он применяет их по порядку, каждое правило действует на вывод того, что было до него.
Этот порядок стоит понять, потому что это особенность, а не случайность. Скажем, первое правило заменяет foo с barи второе правило заменяет bar с baz. Потому что правило второе работает на результате правила первого, текста, который начинался как foo в конечном итоге как baz. Большую часть времени ваши правила независимы, и порядок не имеет значения, но когда они взаимодействуют, поведение предсказуемо: сверху вниз, каждый на предыдущем результате. Инструмент также показывает вам счет для каждого правила, поэтому вы можете подтвердить, что третье правило что-то совпадает и не сидит там и ничего не делает из-за опечатки в поисковом запросе.
Что делают варианты целого слова и падежа?
Два варианта решают случаи, когда простой обмен слишком тупой.
Решает ли чувствительность к случаю Cat, CAT, и cat одно и то же слово или три разных слова. Оно отключено по умолчанию, потому что большинство очисток хочет поймать термин независимо от того, как он был написан с заглавной буквы. Включите его, когда заглавная буква - это все: когда вы хотите изменить одно написание имени, не касаясь другого, или когда вы работаете с кодом, где value а Value являются разными идентификаторами.
Совпадение целых слов решает, должен ли ваш поисковый запрос стоять сам по себе, а не сидеть внутри более длинного слова. это вариант, который спасает вас от классической катастрофы "найти и заменить". Если вы замените cat с dog без сопоставления целых слов вы также поворачиваетесь category в dogegory а scatter в sdogter. При сопоставлении всего слова включается только отдельное слово cat заменяется, и более длинные слова остаются в покое. инструмент обнаруживает границы слов, используя буквы и цифры Юникода, а не определение только ASCII, поэтому слово с акцентом нравится café рассматривается как единое слово и его границы найдены правильно, что является наивной реализацией с использованием классического \b граница ошиблась бы.
Здесь есть более широкий момент о том, как текстовые инструменты должны уважать Юникод, о чем я рассказываю Руководство по текстовым инструментам: обработка текста как байтов, а не как воспринимаемых пользователем символов - это то, откуда возникает удивительное количество ошибок в инструментах.
Как я использую его в реальной работе
Несколько шаблонов возникают снова и снова Когда я вставляю текст из PDF или электронного письма, он часто приходит с термином, написанным непоследовательно, и одно буквальное правило исправляет каждый экземпляр Когда я переношу контент client's, я настраиваю стек правил для названия бренда, старого домена и пары повторяющихся фраз, и запускаю их все сразу Когда я очищаю данные перед их импортом, я использую правила, чтобы удалить повторяющийся префикс или случайный маркерный символ, заменяя его ничем, что является просто правилом с пустой заменой.
Он естественным образом сочетается с другими текстовыми инструментами. Я часто сплющиваю вставленный текст удалить разрывы строк сначала запустите поиск и замену результата. Когда работа на самом деле заключается в изменении формы слов, а не в их замене конвертер дел лучше ли подходит, и когда я удаляю дубликат списка, я обращаюсь к нему дубликат удаления строк вместо. Знание того, какой инструмент для какой работы, составляет половину скорости, и это более широкое изложение Инструменты повышения производительности разработчик гид.
Последнее, и причина, по которой я построил их для запуска в браузере, это конфиденциальность. текст, который вы вставляете в инструмент поиска и замены, часто представляет собой черновик, клиент и #39;s неопубликованная копия, стенограмма или данные, которые вы не имеете дело, загружая на случайный сервер. Все, что этот инструмент делает, происходит в JavaScript на вашем собственном компьютере. Ничего не передается, не регистрируется и не сохраняется, и вы можете подтвердить это, отключившись от сети и наблюдая, как инструмент продолжает работать.
Рабочий пример: переименование продукта на странице
Позвольте мне сделать идею нескольких правил конкретной, потому что это часть, которую люди недостаточно используют. Скажем, клиент был переименован из & quot;QuickBooks Lite& quot; в & quot;Ledgerly, & quot; перенесен из oldsite.com на ledgerly.app, и их старая копия сохранила написание & quot;e-mail" с дефисом, в то время как новое руководство по стилю хочет & quot;email.& quot; это три независимых изменения, и я бы установил их как три правила за один проход, а не три поездки через инструмент.
Правило, которое один находит QuickBooks Lite и заменяет его на Ledgerly. Правило два: находки oldsite.com и заменяет его на ledgerly.app; обратите внимание, что точки в обоих доменах здесь буквальны, поэтому мне не нужно ничего избегать, тогда как инструмент regex будет лечить oldsite.com как совпадающее oldsiteXcom а также. Правило три находки e-mail и заменяет его на email.Я вставляю страницу, запускаю все три, и подсчет рядом с каждым правилом говорит мне, что название бренда менялось девять раз, домен менялся четыре раза, и исправление дефиса ударялось дважды. если бы правило три показывало ноль, я бы знал, что копия не содержит написание через дефис, и я мог бы отказаться от правила.
Подсчеты - тихий герой этого рабочего процесса. Без них вы верите, что каждое правило выполнило свою работу; с их помощью вы получаете немедленную обратную связь о том, что поисковый запрос был правильным или неправильным. Ноль, где вы ожидали совпадений, почти всегда является опечаткой в поле поиска или несоответствием заглавной буквы, которое вы можете исправить, переключив чувствительность к регистру.
Как работает сопоставление?
Стоит немного узнать о том, что происходит под капотом, потому что это объясняет некоторое поведение, которое в противном случае может показаться вам удивительным. Инструмент сканирует текст слева направо. В каждой позиции он проверяет, соответствует ли ваш поисковый запрос, начиная с этого. Если да, и любое условие целого слова удовлетворено, он записывает замену и проходит мимо согласованного текста. Если нет, он копирует один символ и движется дальше на один. Вот почему замена не является рекурсивной в рамках одного правила: когда он пишет замену, он продолжает сканирование после нее, а не внутри нее, поэтому заменяет aa с a в строке aaa дает вам aa вместо того, чтобы рушиться до самого конца a. Если вы хотите коллапса, вы запускаете правило дважды, что и делает второе правило с той же находкой и заменой.
Нечувствительное к регистру сопоставление выполняется сначала посимвольно, а не по строке в нижнем корпусе. Это звучит как деталь реализации, но это важно для правильности: некоторые символы меняют длину, когда они имеют нижний регистр, и сравнение целых строк в нижнем регистре выбивает позиции из выравнивания и повреждает выходные данные. Сравнение одного символа за раз сохраняет честность каждого индекса. Границы целых слов проверяются по символам непосредственно перед и после совпадения, рассматривая любую букву или число Юникода как часть слова, что позволяет акцентированным и нелатинским сценариям вести себя так, как вы ожидаете.
Ничего из этого не является тем, о чем вы должны думать в ежедневном использовании Но это разница между инструментом, который тихо делает неправильную вещь на краевом случае и тот, который вы можете доверять с клиентом's копировать, и это причина, по которой я предпочел бы использовать специально построенный буквальный реплейсер, чем вставить текст в поле regex и надеяться, что мой поисковый запрос не содержал специального символа.
Часто задаваемые вопросы
Как найти и заменить текст без использования regex?
Вставьте текст в инструмент, введите точную фразу, чтобы найти, и точную фразу, чтобы заменить ее, и запустите ее. Поиск буквален, поэтому каждый символ, который вы вводите, сопоставляется как сам по себе, и ничто не нуждается в экранировании. Каждое явление меняется местами, и вы получаете подсчет того, сколько изменений было сделано, и все это в вашем браузере без загрузки чего-либо.
Могу ли я заменить несколько разных слов одновременно?
Да. добавьте строку для каждой пары "найти и заменить", и инструмент применяет их последовательно, каждый из которых действует на результат правила перед ним. Так вы переименовываете бренд, исправляете две ошибки в написании и удаляете кусок шаблона за один проход, и каждое правило показывает свой собственный счетчик замен, чтобы вы могли видеть, что он совпадает.
В чем разница между этим инструментом замены regex?
Этот инструмент буквально соответствует вашему поисковому запросу, поэтому точка соответствует только точке и знаку доллара только знаку доллара, без синтаксиса шаблона для изучения и без случайного сопоставления. Инструмент замены regex рассматривает поисковый запрос как шаблон с подстановочными знаками, якорями и группами захвата, что вам нужно для соответствия категории вещей, например, любому году или любому адресу электронной почты. Используйте литерал, когда вы можете ввести именно то, что хотите; используйте regex, когда вы соответствуете форме.
Как сопоставление всего слова останавливает нежелательные замены?
При включении сопоставления всего слова поисковый термин заменяется только тогда, когда он стоит сам по себе, а не внутри более длинного слова. Замена cat потом изменения cat Но уходит category, scatter, и located нетронутый. инструмент использует границы, поддерживающие Unicode, поэтому ударные и неанглийские слова обрабатываются правильно, а не разделяются в неправильном месте.
Найдёт и заменит ли изменение разрывов или интервалов между строками?
Нет. Изменяются только символы, которые вы искали. разрывы строк, отступы, интервалы и знаки препинания вокруг ваших совпадений остаются точно такими, какими они были. если замена длиннее или короче оригинала, окружающий текст меняется естественным образом, но больше ничего не переформатируется и не переплавляется.
Есть ли предел тому, сколько текста я могу обработать?
Нет фиксированного предела, кроме вашего браузера и #39;s памяти. потому что работа происходит на вашем устройстве, а не на сервере, блоки из сотен тысяч символов обрабатываются почти мгновенно и нет ограничения размера загрузки. для чего-то размером с целую книгу вы можете заметить короткую паузу, но обычные документы фактически мгновенные.
Мой текст загружен или хранится где-нибудь?
Нет. текст обрабатывается JavaScript в вашем браузере и никогда не передается, не регистрируется и не сохраняется. Вы можете проверить это, открыв вкладку сети во время выполнения замены или отключившись от Интернета, поскольку инструмент продолжает работать в автономном режиме после загрузки страницы. Это причина использования инструмента на стороне клиента для черновиков, клиентских копий и всего личного.



