在线正则筛选行 · 按规则保留文本行 | DedupeLines
DedupeLines
免费 · 无需注册 浏览器本地处理 · 零上传 · 逐行正则匹配

正则筛选行

粘贴列表,写一个正则,把匹配的行筛出来。为日志清洗、线索筛选、任何「只想留下符合规则的那几行」场景打造。

常用示例
输入 · 0 行
输出 · 0 行
在左侧粘贴内容 — 结果会实时出现在这里。

或按 Ctrl+Enter

输入行数 0
空行数 0
匹配数 0
未匹配 0
输出行数0

什么时候用这个工具

指南
01 / 日志筛选

从 5 万行服务器日志里只保留 ERROR / WARN 行,不需要登服务器跑 grep。

02 / 线索清洗

一份长邮箱列表,提取只属于 gmail 或只属于 @yourcompany.com 域名的行。

03 / URL 审计

把一份大的 sitemap 导出筛成只剩匹配某条路径规则的 URL,不用打开 Excel 筛选对话框。

04 / 正则调试

可视化迭代正则:改 pattern、点执行、看哪些行还在。6 个常用预设让你快速上手。

使用方法

三个步骤
  1. 01

    粘贴文本或拖入 .txt 文件

    桌面端 10 万行 / 移动端 5K 行内实时预览。超出阈值自动切到大文件模式 —— 同一引擎,页面保持响应并最终生成 .txt 下载。

  2. 02

    写一个正则

    JavaScript 风味(不需要前后斜杠)。15 个预设覆盖 email、URL、IP、日期、时间、电话,外加 Starts/Ends/Contains 等参数化模式(高亮的 abc 是占位符)。

  3. 03

    点击执行

    匹配的行保留,其余丢弃。执行前可以切换区分大小写、修剪空白、去除空行、匹配去重、打乱结果等开关。

引擎内部

工程笔记
算法
JavaScript 原生 RegExp · 每行一次 re.test()

与 V8 / SpiderMonkey 使用的同一 ECMA-262 引擎。除非「区分大小写」开关打开,默认带 i 标志(不区分大小写)。

吞吐
2024 款 M3 MacBook Air 上 10 万行匹配约 380 ms

O(n) 扫描,除匹配字符串外不做每行分配。单次硬上限 80 MB,防止误传几 GB 大文件锁死标签页。

线程
文件 ≥ 2 MB 或 ≥ 10 万行时启用 Web Worker

主线程保持可响应;Worker 加载同一 dedupe.js 引擎并在完成后回传结果。

隐私与限制

数据留在哪里

一切都在浏览器内运行。文本永远不会上传 —— 没有 fetch、没有 XHR、没有任何针对你输入内容的统计。页面加载后断网工具照样能用。单次硬上限 80 MB,防止意外把几 GB 的日志塞进来卡死标签页。

常见使用场景

适用范围

大规模日志过滤

从 10 万行服务器日志里只保留 ERROR / WARN / FATAL 行。可视化迭代 pattern,不用 SSH 进去跑各种 grep 变体。

客户名单清洗

从 5 万行邮件导出里只抽出 gmail.com 或 @your-company.com 的地址 —— 不用在 Excel 里折腾筛选,不用上传。

Sitemap 审计

把 20 万行 sitemap dump 裁到匹配某个路径 pattern 的 URL。配合首页去重工具就能得到不重复的 URL 列表。

在真实数据上测 pattern

在你真实的列表上调正则(不是 regex101 那种玩具示例),全程不上传。改一下、Run 一下、看哪些行被命中。

性能与对比

真实数据
指标 数值 说明
吞吐 · 10 万行 DedupeLines: Chrome 132 约 380 ms · GNU grep -E: 约 160 ms 测试机型:2024 款 M3 MacBook Air。参考数据集:10 万行日志,pattern /^(ERROR|WARN)/。grep 在纯速度上胜出;DedupeLines 胜在「不用 SSH、不用安装、任意浏览器标签页都能跑 —— 包括 iPad 和被锁死的公司 Windows」。
内存占用 DedupeLines: JS 堆中约为输入的 3 倍 · grep: RSS 约为输入的 1.2 倍 浏览器 JS 开销 vs 原生二进制。每次运行 80 MB 硬上限避免 OOM 标签崩溃;50 MB 日志驻留内存可控制在 200 MB 以内。
异步卸载阈值 DedupeLines: 桌面 2 MB / 10 万行 · regex101.com: 编辑器约 5 万字符上限 超过阈值后 DedupeLines 把任务卸载到 Web Worker,主线程保持可交互。iOS Safari 内存限制是移动端更低阈值(300 KB / 5K 行)的原因。
正则引擎 DedupeLines: ECMA-262 §22.2 RegExp · grep: POSIX BRE / ERE JavaScript 原生 RegExp —— Chrome、Firefox、Safari、Edge 是同一个引擎。Lookbehind、命名组、Unicode property 转义(\p{…})全部支持。grep 的 POSIX 风味要保守一些。
冷启动延迟 DedupeLines: 0 ms(页面已加载) · SSH 到远端: 200-500 ms RTT 不用跑去远端机器。页面加载完之后,正则就像按一次键一样快,并且支持离线使用。

常见问题

问答

这里用的是哪种正则风味?

JavaScript 内置 RegExp(ECMA-262)。后顾断言、命名分组、Unicode 属性转义(\p{…})在现代 Chrome、Firefox、Safari、Edge 上都能用。pattern 前不要加 /;输入框两侧的斜杠是装饰。

我的正则什么都匹配不上,怎么回事?

常见三种原因:(1)「修剪空白」开关关着,行末有空白导致 ^…$ 锚点失效;(2)「区分大小写」开关打开,字符大小写不一致;(3) 你转义了斜杠 —— JavaScript 正则不需要转义斜杠。

pattern 能跨多行匹配吗?

不能 —— 本工具按设计逐行执行正则。如需跨行匹配,请用 regex101.com 这类支持 dotall 标志和多行锚点的正则 IDE。

我的数据会被发送到任何地方吗?

不会。匹配完全在你的浏览器标签内运行。没有上传步骤、没有服务端处理、不对你粘贴的文本做任何遥测。加载后断 WiFi,工具仍能正常工作。

文件大小上限多少?

单次硬上限 80 MB。桌面端 2 MB(移动端 300 KB)以上工具自动切换到大文件模式 —— 文本不进 textarea,处理由 Web Worker 完成,结果以 .txt 下载。