Command Palette

Search for a command to run...

如何在没有正则表达式的情况下查找和替换文本

如何在没有正则表达式的情况下查找和替换文本

T
Toolz Team
|Sep 13, 2026|16 最小读数
Google 上的首选 Toolz.dev

文本工具集合的一部分

查找并替换文本

Wang上查找和替换没有正则表达式的文字,一次应用好几条规则,整Zheng词语匹配,控制格,客户端,无注册。

用查找并替换文本

我跑 Toolz.dev wordpress插件代码,laravel API和React前端度过我一周的大部分时间,查找和替换是我执行的单次编辑比其他任何编辑都要多,但十分之九我不想要它的强大版本我不想要一个正则表达式我想拿一段文字,说一个客户端的每次出现's旧产品名称,并把它换成新的,确切地说,我的搜索词中没有一个流浪字符匹配我从来没有想触摸的东西,这就是什么 查找并替换工具 does,而本指南是关于为什么字面上的,无聊的版本的find和替换是你大部分时间想要的。

TL;博士: 该工具确实在字面上查找并替换了一块粘贴的文本。搜索词与类型完全匹配,因此句号与句号匹配,美元符号与美元符号匹配,没有转义,也没有意外过度匹配。您可以添加几个查找并替换规则并一次应用它们,将匹配限制为整个单词,并打开或关闭大小写敏感性。它报告每个规则进行了多少次替换。所有内容都在您的浏览器中运行,因此您粘贴的任何内容都不会上传。当您真正需要通配符和捕获组时,正则替换程序是正确的工具。

什么是字面查找和替换,以及为什么"字面"很重要?

Find and leplace是定位一个字符串的每一个出现,并交换另一个字符串的操作,每个编辑器都有。不同的地方是工具如何解释你的搜索词,而那个单一的设计选择决定了工具是帮助你还是悄悄破坏你的文本。

2个流派,一个正则表达式替换器把你的搜索词当作一种模式,其中某些字符是命令:一个点表示"任何字符,"一个星号表示"重复,"一个美元符号表示"行尾,"而括号、括号、反斜杠都带有特殊的含义,一个字面上的替换器把你的搜索词当作本身,字符换字符,没有任何附加到任何东西上的特殊含义。

Most的时候,字面就是你想要的,这里是具体的原因,假设你要替换版本字符串 1.0.0 与 2.0.0 块(block)的文本中。在正则表达式工具中,那些点都是通配符,因此您的搜索也匹配 1x0y0、 1a0b0的,以及其他你从未打算的字符串。你将不得不将点转义为 1\.0\.0 zhi安全,而忘了,工具做了一些微妙的错误,bu警告你,在字面上的工具中, 1.0.0 手段 1.0.0、点就是点,没有什么可以逃避的,也没有什么可以出错的,这样的价格也是如此 $9.99、带反斜杠的文件路径,或者是其中带括号的代码片段,字面工具处理所有这些,而你没有考虑模式语法,因为没有模式语法。

我什么时候应该使用正则表达式替换器?

Literal 是正确的默认值,但它并不是对所有事物的正确答案,我宁愿告诉你它停在哪里,也不愿假装它没有。达到一个 regex 替换工具 当你匹配的东西是一个形状而不是一个固定的字符串时,如果你需要匹配每四位数年份,或者每个电子邮件地址,或者每行以哈希开头,或者你想通过用捕获组从中拉出碎片来重新格式化匹配的文本,那就是模式工作,一个字面工具无法做到 regex 测试仪 是在运行该模式之前构建和调试该模式的地方。

Dividing line 很简单,如果能准确地打出你要找的东西,就用字面上的 find 替换并保存自己逃逸,如果你要找的是共享一个形状但不是确切字符的一类事物,就用正则表达式,大多数日常的文本清理是第一种,这就是为什么字面工具涵盖了大部分真实的工作,正则表达式工具涵盖了其余的工作。

情况 用 为什么
重命名固定单词或短语 字面查找并替换 这个术语是准确的;不需要模式
包含点、斜线或的搜索词 $ 字面查找并替换 没有逃跑,没有意外外卡比赛
一次性修复几个不同的术语 字面查找和替换,多个规则 每条规则都是准确的并按顺序应用
匹配任何年份、电子邮件或代码形状 雷格克斯替换 只有模式才能描述类别
重新排序或重新格式化匹配的文本 雷格克斯替换 捕获组拔出并重新排列碎片
按规则在线开始或单词边界进行匹配 雷格克斯替换 锚点和边界是模式特征

多重规则如何运作?

I lian most reach on most 的特性是一次应用几个规则,真正的清理很少是一次交换,当我接管一个客户端's copy 时,我可能需要更改一个品牌名称,修复两个一致的拼写错误,并删除一块样板,全部在同一块文本中做到这一点,因为四个单独的遍历是繁琐且容易出错的工具,您可以为每个查找和替换对添加一行,它按顺序应用它们,每个规则都作用于它之前的一个的输出。

That ordering 是值得理解的,因为它是一个特征,而不是偶然,说规则一代替 foo 与 bar并且规则二替换 bar 与 baz。因为规则二运行在规则一的结果上,所以文本开头为 foo 最终作为 baz。大多数时候你的规则是独立的,顺序并不重要,但是当它们确实相互作用时,行为是可预测的:从上到下,每个在前面的结果。该工具还向您显示每个规则的计数,因此您可以确认规则三匹配了一些东西,并且不会因为搜索词中的拼写错误而坐在那里无所事事。

全词和案例选项做什么?

有两种选择可以处理平淡交换过于生硬的情况。

案例敏感性决定是否 Cat、 CAT、和 cat 是同一个词还是三个不同的词,默认情况下是关闭的,因为大多数清理都想抓住一个术语,无论它如何大写。当大写是全部时打开它:当你想更改名称的一个拼写而不触及另一个拼写时,或者当你在代码的地方工作时 value 並 Value 是不同的标识符。

Whole-word matching决定你的搜索词是否必须自己站立,而不是坐在一个较长的词里面,这是让你免于经典的查找替换灾难的选项,如果你替换 cat 与 dog 没有全词匹配,你也会转身 category 进入 dogegory 並 scatter 进入 sdogter。全词匹配开启,只有独立词 cat 被替换,较长的单词被单独保留,该工具使用unicode字母和数字而不是仅ascii定义来检测单词边界,因此像这样的重音单词 café 被当作一个单词来对待,并且它的边界被正确地找到,这是一种使用经典的天真实现 \b 边界会出错。

关于文本工具如何尊重 Unicode,这里有一个更广泛的一点,我在其中讨论过这一点 文本工具指南:将文本视为字节而不是用户感知的字符是数量惊人的工具错误的来源。

我如何在实际工作中使用它

PDF或邮件中粘贴出几个图案,经常会出现一个写得不一致的术语,一个字面规则修复每个实例,当我迁移客户端's内容时,我为品牌名称、旧域和几个重复出现的短语设置了一堆规则,一次运行完数据再导入,我用规则去掉一个重复的前缀或一个杂散标记字符,什么都换,只是一个空替换的规则。

它与其他文本工具自然配对。我经常将粘贴的文本与。 删除换行符 首先,然后运行查找并替换结果。当工作实际上是改变单词的形状而不是交换它们时, 案例转换器 是更好的适合,当我去复制列表时,我会达到 重复的线去除器 相反。知道哪个工具的工作速度是哪个工作的一半,并且有更广泛的概要 开发人员生产力工具 指南。

最后一件事,以及我构建这些在浏览器中运行的原因是隐私。您粘贴到查找和替换工具中的文本通常是一个草稿,一个客户端's未发布的副本,一个成绩单,或者您没有业务上传到随机服务器的数据。该工具所做的一切都发生在您自己的机器上的 JavaScript 中。没有任何内容被传输、记录或存储,您可以通过断开网络并观看该工具继续工作来确认。

一个有效的示例:跨页面重命名产品

让我把多规则的想法具体化,因为它是人们未充分利用的部分。说一个客户从 "QuickBooks Lite" 更名为 "Ledgerly,"从 oldsite.com 到 ledgerly.app并且他们的旧副本保留了拼写 "电子邮件"带连字符,而新风格指南想要 "电子邮件。"那是三个独立的更改,我会将它们设置为一次通行中的三个规则,而不是通过工具进行三次旅行。

规则一找到 QuickBooks Lite 并用替换它 Ledgerly. 规则二发现 oldsite.com 并用替换它 ledgerly.app;请注意,这两个域中的点在这里都是字面意思,因此我不必逃避任何内容,而正则表达式工具会处理 oldsite.com 为匹配 oldsiteXcom 还有。规则三发现 e-mail 并用替换它 email。我粘贴页面,全部运行三个,每个规则旁边的计数告诉我品牌名称更改了九次,域名更改了四次,连字符修复击中了两次,如果规则三显示为零,我会知道副本不包含连字符拼写,我可以删除规则。

Counts是这个工作流程的安静英雄,没有他们,你就相信每条规则都发挥了作用;有了他们,你立即得到反馈,即搜索项是对或错。您期望匹配的零几乎总是查找字段中的错字或您可以通过切换大小写敏感性来修复的大写不匹配。

匹配是如何工作的?

Hood下发生的事情值得了解一点,因为它解释了一些你可能会觉得令人惊讶的行为工具从左到右扫描文本,在每个位置它检查你的搜索词是否匹配从那里开始如果它符合,并且满足任何整字条件,它写替换并跳过匹配的文本,如果不满足,它复制一个字符跨过并移动一个,这就是为什么替换不是在单个规则内递归的原因:当它写替换时,它继续扫描之后,而不是在里面,所以替换 aa 与 a 在字符串中 aaa 给你 aa 而不是一路崩溃 a.如果你想要崩溃,你运行规则两次,这正是具有相同查找和替换的第二条规则所做的。

Case-insensitive matching 是逐个字符完成的,而不是先将整个字符串降壳完成。这听起来像是一个实现细节,但对于正确性很重要:有些字符在低壳时会改变长度,比较整个低壳字符串会使位置不对齐并损坏输出。一次比较一个字符可以保持每个索引的诚实。在匹配前后立即对字符检查整个单词边界,将任何 Unicode 字母或数字视为单词的一部分,这就是让重音和非拉丁脚本按照您期望的方式行事的原因。

这一切都不是你在日常使用中必须考虑的事情。但这是边缘案例上悄悄做错事情的工具与客户端可以信任的工具之间的区别's副本,也是我宁愿使用专门构建的文字替换符,也不愿将文本粘贴到正则表达式框中并希望我的搜索词不包含特殊字符的原因。

常见问题

如何在不使用正则表达式的情况下查找和替换文本?

将您的文本粘贴到工具中,键入要查找的确切短语和要替换的确切短语,然后运行它。搜索是字面意思,因此您输入的每个字符都将作为自身匹配,无需任何内容逃避。每次发生都会交换,您将获得有多少更改的计数,所有这些都在您的浏览器中,无需上传任何内容。

我可以同时替换几个不同的单词吗?

是的。为每个查找和替换对添加一行,工具按顺序应用它们,每个行都作用于其之前的规则结果。这就是您重命名一个品牌、修复两个拼写错误以及单遍剥离一块样板的方式,并且每个规则都显示自己的替换计数,以便您可以看到它匹配。

这与正则表达式替换工具有什么区别?

该工具从字面上匹配您的搜索词,因此点仅匹配点,美元符号仅匹配美元符号,没有模式语法可供学习,也不会意外过度匹配。正则表达式替换工具将搜索词视为具有通配符、锚和捕获组的模式,这是您需要匹配任何年份或任何电子邮件地址等一类事物。当您可以输入您想要的确切事物时使用字面意思;当您匹配形状时使用正则表达式。

全词匹配如何阻止不需要的替换?

打开全词匹配后,搜索词只有在它独立站立时才会被替换,而不是在较长的单词内部。替换 cat 然后改变 cat 但离开了 category、 scatter、和 located untouched。工具使用unicode感知边界,因此重音和非英语单词的处理是正确的,而不是在错误的地方被拆分。

会找到并替换更改我的换行符或间距吗?

No。只更改你搜索的字符,你的匹配周围的换行、缩进、间距、标点完全保持原样,如果替换比原来的长或短,周围的文本自然移动,但其他什么都没有重新格式化或重新流。

我可以处理多少文本是否有限制?

器 's 内存之外没有固定的限制,因为工作发生在你的设备上而不是服务器上,几十万个字符的块几乎是瞬间处理的,没有上传大小上限,对于整本书大小的东西,你可能会注意到短暂的暂停,但普通文档实际上是瞬间的。

我的文本是否上传或存储在任何地方?

No。文本在您的浏览器中由JavaScript处理,并且从未传输,记录或存储。您可以通过在运行替换时打开网络选项卡或断开与互联网的连接来验证这一点,因为一旦页面加载,该工具就一直离线工作。这就是使用客户端工具进行草稿,客户端复制和任何私密内容的原因。

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!