文本查找和替换

当客户在草稿写到一半时改了产品名称,或者你需要替换邮件模板中的每一个 {FIRST_NAME} 占位符时,为了三百次替换而打开文字处理软件未免小题大做。粘贴文本,设置好查找/替换这一对,切换区分大小写或正则表达式模式,这个工具就会重写每一处匹配,并显示已替换数量的计数器。

如何查找和替换文本

  1. 1

    粘贴文本

    一篇文章、一个模板、一个日志文件,或任意纯文本字符串。

  2. 2

    输入要查找的模式

    字面的单词或短语,或在正则开关打开时输入正则表达式。

  3. 3

    输入替换内容

    留空即可删除匹配项;在正则模式下,用 $1、$2 等重用捕获组。

  4. 4

    选择选项

    打开区分大小写,以及用于高级查找的正则模式。

  5. 5

    替换并复制

    查看匹配数量,一键复制重写后的文本。

选项速查

选项 它会改变什么
区分大小写 Apple 只匹配 Apple,不匹配 apple 或 APPLE(适用于不含正则的简单查找)
正则表达式 查找框会被当作 PCRE 模式读取,用 /模式/ 之类的定界符包裹
内联标志 在结束定界符之后添加标志:i 忽略大小写,s 让 . 也匹配换行,m 让 ^ 和 $ 在行边界处匹配
全部替换 每一处匹配都会被替换;没有「仅第一处」模式

实用正则模式

  • 去除 HTML 标签:/<[^>]+>/
  • 合并多个空格:/ {2,}/ 变为单个空格
  • 删除网址:/https?:\/\/\S+/
  • 屏蔽电话号码:/\d{3}-\d{3}-\d{4}/ 变为 ***-***-****
  • 弯引号变直引号:/[‘’]/ 变为 '
  • 捕获每行的第一个单词:/^(\w+).*$/m 变为 $1

捕获组能省时间

在正则模式下,圆括号会捕获匹配的部分,$1、$2 在替换中重用它。要在 CSV 的某一列中交换名与姓:

  • 查找:/(\w+),\s*(\w+)/
  • 替换:$2 $1

常见陷阱

  • 缺少定界符。在正则模式下,模式必须被包裹,例如 /foo/。没有定界符时查找会失败,文本原样返回。
  • 贪婪匹配。/<.+>/ 会吞掉一行中从第一个 < 到最后一个 > 的所有内容。用 /<.+?>/ 进行惰性匹配。
  • 特殊字符。.、+、*、?、(、)、[、]、\、|、^、$ 都是正则运算符。想要字面字符时在前面加反斜杠。
  • 正则模式下的大小写开关。区分大小写复选框适用于简单查找;在正则模式下改用 i 标志来控制大小写。
  • 替换中的反向引用。用 $1 或 ${1} 重用某个组。若要在数字前输出字面的 $,将其转义为 \$。
  • 换行符。Windows 的 \r\n 与 Unix 的 \n 在屏幕上看起来完全一样;不一致会破坏行尾模式。

常见问题

PCRE(与 Perl 兼容的正则表达式),是 PHP、Perl 和 grep -P 共用的引擎。用 /模式/ 之类的定界符包裹你的模式,并在结束定界符之后添加 i、s 等标志。少数仅 JavaScript 或 Python 才有的写法可能不能同样使用。

数千处都没问题。非常大的输入会受请求大小和处理时间的限制;对于超大文件,请使用 sed 这类命令行工具,或支持流式替换的编辑器。

在工具内不能。请把原始文本留在另一个标签页,或先粘贴到带版本控制的编辑器中,以便回退。

查找和替换在我们的服务器上运行:你的文本会被发送以执行替换,并在返回响应后不予保存。对于机密内容,建议使用离线编辑器。

相关工具

此工具还提供其他语言版本