Notepad++提取邮箱必须用替换而非查找全部,因后者仅高亮带上下文的匹配项;需用正则[^\s@]+@[^\s@]+\.[^\s@]+配合$1\r\n反向引用导出纯净列表,并注意全角字符、换行符及Excel粘贴格式问题。

Notepad++ 本身不提供“一键提取邮箱到剪贴板”功能,必须用 替换 配合捕获组才能导出干净、无上下文的纯邮箱列表——靠 查找全部 只会高亮带干扰文本的片段,复制出来全是“联系人:admin@example.com(请勿外发)”这类脏数据。
为什么不能只用「查找全部」
「查找全部」弹出的结果窗口里,每条记录都带原文上下文和行号,右键复制也是整行内容。你无法直接得到每行一个邮箱的纯文本列表。更麻烦的是,它不支持反向引用、无法去重、也不能自动补换行——这些都得靠 替换 流程闭环完成。
- 点
查找全部后看到的是匹配位置,不是可导出的数据 - 复制结果含前缀(如
email:)、后缀(如括号说明)、空格甚至换行符 - 若一行含多个邮箱(如
cc: a@b.com, c@d.org),查找全部默认只标第一个,漏掉后续
真正能导出纯邮箱列表的替换写法
打开 Ctrl+H,勾选「匹配正则表达式」,输入以下组合:
查找:([^\s@]+@[^\s@]+\.[^\s@]+)
替换:$1\r\n
- 这个正则不依赖大小写或 TLD 长度,能抓
user@host.local、test@公司.cn、admin@sub.domain.co.jp - 别用
\w+——它不认中文、全角字符、下划线开头等合法邮箱成分 - 务必用
$1,不是\1;Notepad++ 的 Boost 正则引擎只识别$1作反向引用 - 替换后若出现空行,再跑一次
^\s*$\r?\n→ 空(删除空行)
遇到全角符号或 URL 嵌套怎么办
中文模板里常见全角 @(U+FF20)和 .(U+FF0E),原始正则完全匹配不到。还有 mailto:me@example.com 这类藏在属性里的邮箱,也容易被漏。
- 先统一转为半角:用「扩展模式」搜
\x{FF20}→ 替成@;搜\x{FF0E}→ 替成. - 要排除
mailto:前缀干扰,加负向先行断言(v8.5.6+ 支持):(? - 如果文本混有大量 URL,且邮箱总出现在引号内(如
"user@example.com"),可改用["']([^\s@]+@[^\s@]+\.[^\s@]+)["'],再替换为$1\r\n
最易被忽略的一点:替换后粘贴进 Excel 时,\r\n 会被识别为单元格内换行,而非新行。必须在 Excel 中「选择性粘贴 → 文本」,或粘贴后走「数据 → 分列 → 分隔符号 → 勾选换行符」,否则所有邮箱挤在一个格子里。


















