文本工具

批量查找替换

粘贴文字,填上要找的内容和替换成什么,替换之前先看到所有匹配被高亮出来。普通模式按字面匹配,安全省心;正则模式可以处理手机号、日期、连续空行这类有规律的内容,替换时还能用 $1 引用分组。

全部在你的浏览器里运行,这里输入的内容不会上传。

怎么用

  1. 把要修改的文字粘贴到「文字」框里。
  2. 在「查找」里输入要找的内容,下方预览会高亮每一处匹配,并显示一共找到几处。
  3. 在「替换为」里输入新内容。留空就是把匹配到的内容删掉。
  4. 按需勾选选项:「区分大小写」让 A 和 a 被当作不同的字母;「整词匹配」让 cat 不会匹配到 catalog 里面;「识别 \n 和 \t」用来查找或插入换行、制表符;「正则表达式」用来按规律匹配。
  5. 点「全部替换」把修改写回文字框,或者点「复制结果」只复制修改后的文字、不动原文。「撤销」可以一步步退回之前的替换。

匹配规则

普通模式

默认模式下,两个框里的内容都按字面理解:句点就是句点,替换内容里的 $ 就是美元符号。日常的改名、统一措辞、修正反复出现的错别字,用这个模式最稳妥。匹配不会重叠:把「aaa」里的「aa」替换掉,只会改前两个字母,第三个保持不变。

正则表达式

正则模式采用 JavaScript 语法,规则可以参考 MDN 的正则表达式指南。它会替换全部匹配;^ 和 $ 匹配每一行的开头和结尾;并且按完整的 Unicode 字符处理,一个表情符号算一个字符,而不是两半。替换内容里可以用特殊写法插入匹配的一部分:$& 是整个匹配,$1 到 $99 是编号分组,$<名字> 是用 (?<名字>…) 写的命名分组。

整词匹配

很多工具用 \b 实现整词匹配,而 \b 只认识 A 到 Z 这些英文字母,会把 café 当成在词中间断开。这个工具改为检查匹配两侧的字符是否属于任何文字的字母、数字或下划线。中文、日文本来就不用空格分词,整词匹配对它们没有实际意义,处理中文时不必勾选。

失控的表达式

有些写法,比如 (a+)+$,在「差一点就能匹配」的文本上会耗费指数级的时间,这个问题叫灾难性回溯,也被当作一种拒绝服务攻击手段,称为 ReDoS。这里的查找在单独的后台线程里运行,超过两秒自动中止,所以写错的表达式不会把页面卡死。

算例

任务查找替换为结果
手机号打码(\d{3})-(\d{4})-(\d{4})(正则)$1****$3138-0000-1234 → 138****1234
日期改格式(\d+)-(\d+)-(\d+)(正则)$3/$2/$12026-09-28 → 28/09/2026
删除多余空行\n{2,}(正则)\n(开启转义)连续三个换行变成一个
合并多余空格\s+(正则)一个空格one two three → one two three
逗号分隔改成每行一个,(开启转义)\na,b,c → 每项一行
每行加前缀^(正则)> 每一行开头都加上 >
给数字加括号\d+(正则)[$&]a1b22 → a[1]b[22]

普通模式下,把「price $5」里的 $5 替换成 $10,得到「price $10」,美元符号不会被当成分组引用。勾选「整词匹配」后,把「cat catalog concat」里的 cat 替换成 dog,只有第一个词会被替换。

整理从网页或 PDF 复制来的文字时,最常用的是前三行:先用「删除多余空行」去掉段落之间的大片空白,再用「合并多余空格」清理排版留下的空格,最后按需要调整格式。每一步都会先显示找到几处,确认无误再替换。

局限

  • 只支持 JavaScript 正则语法。 其他引擎特有的写法,比如 PCRE 的占有量词、\A 和 \Z,不能使用;后行断言、命名分组和 \p{L} 这类 Unicode 属性都支持。
  • 预览只显示前 20000 个字符, 最多高亮 5000 处匹配。计数和替换始终覆盖全文。
  • 手动修改文字后,撤销记录会清空。 在文字框里打字会开始新的历史。

常见问题

怎样把内容替换成换行?

勾选「识别 \n 和 \t」,在「替换为」里输入 \n。

为什么「.」把所有字都匹配上了?

你开启了正则模式,. 在正则里表示「任意字符」。关掉正则,或者写成 \. 来匹配句点本身。

替换时怎样保留匹配到的内容?

在正则模式下,$& 表示整个匹配,$1、$2 表示各个括号里的部分。

能批量删除某个词吗?

可以。「替换为」留空,点「全部替换」即可。

文字会上传吗?

不会。匹配在你自己浏览器的后台线程里完成。

参考资料

↵ 打开 · Esc 关闭