sublime text 提取邮箱最快方式是用正则\b[a-za-z0-9._%+-]+@[a-za-z0-9.-]+\.[a-za-z]{2,}\b配合find all与ctrl+shift+l转多光标复制,可避免连粘、支持常见域名,需预处理全角字符与不可见符号。

Sublime Text 没有“一键提取邮箱到新文件”的原生按钮,但用 Find All 配合合适正则,3 秒内就能把所有邮箱复制成纯文本列表——这是最稳、最快、也最不容易出错的方式。
怎么写一个能用的邮箱正则?
别抄 RFC 5322 全兼容版本,Sublime 的 Boost 正则引擎不支持条件断言,硬套会匹配失败或卡死。用这个就行:
\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b
-
\b是单词边界,防止从abc@test.com.xyz里只抠出test.com -
[A-Za-z0-9._%+-]+覆盖 Gmail / Outlook 实际允许的前缀字符(点、下划线、加号、百分号、短横) -
\.[A-Za-z]{2,}只要求顶级域至少两个字母,能匹配.co.uk.app.dev,不强求二级域校验 - 如果文本含全角
@或空格,先用Ctrl+H替换掉:查找@(中文空格+@)或@(全角@),替换成普通@
为什么 Find All 后不能直接复制出干净列表?
常见错误是点了 Find All 但没注意当前是否处于「多光标选中」状态。Sublime 不会自动帮你分行——它只是高亮所有匹配项,然后把光标停在每个匹配开头。
- 必须按
Ctrl+Shift+L(Windows/Linux)或Cmd+Shift+L(macOS)把每个匹配转为独立光标 - 再按
Ctrl+C,粘贴出来就是每行一个邮箱,无路径、无行号、无多余空格 - 如果漏了这步,直接
Ctrl+C会复制成一长串连在一起的邮箱(比如a@b.comc@d.org) - 若文档超 10MB,
Find All可能只返回前几千个结果;此时先用Ctrl+Shift+F定位到具体小文件再操作
想把整行都拎出来(比如日志里带邮箱的那几行)?
这时候不能只匹配邮箱本身,得让正则吞下整行。用这个:
^.*\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b.*$
-
^和$锁定行首行尾,确保整行被选中 -
.*在邮箱前后吃掉任意内容(包括空格、括号、尖括号等) - 点
Find All后,直接按Ctrl+L(Windows/Linux)或Cmd+L(macOS)扩展为整行选中,再Ctrl+C - 如果行末有换行符干扰,复制后可用
Ctrl+Shift+P→Remove Empty Lines清理空行
真正容易被忽略的是编码和不可见字符:零宽空格(\u200b)、BOM 头、全角空格(\u3000)会让正则完全失效。遇到“明明正则对却找不到”,先打开 View → Characters → Show White Space 看一眼真实结构,比改十遍正则更省时间。











