Notepad++中通过正则表达式提取邮箱地址的实例

小磊大大_4194

小磊大大_4194

2026-05-20

753人浏览

原创

notepad++正则提取邮箱失败主因是pcre引擎限制及边界处理不当;应避免\b、用(?i)忽略大小写、强制首尾字母数字、勾选“匹配新行”,再经两次替换导出纯列表。

notepad++中通过正则表达式提取邮箱地址的实例

Notepad++正则提取邮箱的常见失败原因

直接套用网上搜到的 [a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,} 往往漏匹配或误匹配,根本原因是 Notepad++ 默认使用的是 PCRE(Perl Compatible Regular Expressions)引擎,但不支持 Unicode 属性类(如 \p{L}),也不支持 \b 在中文/全角字符边界上的准确行为。更实际的问题是:邮箱前后可能紧贴中文、括号、换行或空格,而 \b 在这些位置完全失效。

  • 中文文档里写“联系邮箱:user@domain.com”,冒号后没空格 → \b 匹配不到开头
  • 邮箱被括在中文括号中,如「(test@example.cn)」→ 普通 [a-zA-Z0-9...] 会把右括号也吞进去
  • 多个邮箱连写,如 one@x.com,two@y.com → 不加边界控制会整个当一个匹配

推荐使用的稳定正则模式

用这个表达式能覆盖绝大多数实际场景:(?i)@#@#@#@#@#@#@#@#@#@0?@(?:@#@#@#@#@#@#@#@#@#@1?.)+[a-z0-9][a-z0-9.-]*[a-z0-9]

说明:

  • (?i) 开启忽略大小写,避免漏掉大写的邮箱前缀
  • 前后不依赖 \b,而是用「非邮箱字符」自然分隔 —— 实际操作中,你在 Notepad++ 的「查找」对话框勾选「匹配全部字符」+「正则表达式」,然后直接搜索即可
  • 强制首尾为字母数字,排除 .@a.b 或 @a.b. 这类非法形式
  • 支持常见中文环境下的混排,比如「邮箱:admin@test.org.cn(请勿外传)」能准确定位中间部分

示例文本中匹配效果:

张三 <zs>  
李四(邮箱:ls@sub.domain.co.uk)  
无效:@nope.com / just@.com / @a.b.c</zs>
→ 只提取出 zs@example.com 和 ls@sub.domain.co.uk

批量提取后如何导出为纯邮箱列表

Notepad++ 本身不提供“导出匹配项”功能,得靠两次替换中转:

  • 第一步:把所有非邮箱内容替换成换行符,只留邮箱
    查找:.<em>?(<code>[a-z0-9](?:[a-z0-9._%-][a-z0-9])?@(?:@#@#@#@#@#@#@#@#@#@1?.)+[a-z0-9][a-z0-9.-][a-z0-9]).
    替换为:\1\r\n
    (注意勾选「匹配新行」,否则 .*? 不跨行)

  • 第二步:删掉所有空行和多余空白
    查找:^\s*$\r?\n,替换为空(即删除空行)

最终得到每行一个邮箱的干净列表。如果原始文本含 HTML 标签或引号包裹,建议先用「HTML Tag」插件清理再执行。

容易被忽略的编码与换行问题

Notepad++ 对 UTF-8 with BOM 和无 BOM 文件的正则表现一致,但若文件是 GBK 编码且含中文邮箱别名(如 张三@domain.com),这种邮箱本身就不符合 RFC 规范,PCRE 无法识别中文用户名,必须提前转换或人工确认。

另外,Windows 换行符 \r\n 在正则中要显式写出;用 . 默认不匹配 \r 和 \n,所以跨行提取时务必勾选「匹配新行」,否则 .*? 在遇到换行就停住。

真正卡住人的往往不是正则写不对,而是没注意当前文档编码、是否勾了「匹配新行」、以及原始文本里邮箱是否被引号/括号/中文标点半包裹 —— 这些细节比语法本身更容易导致提取失败。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

正则表达式 notepad

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

2023.06.20

4256

8

正则表达式不包含
正则表达式不包含

正则表达式,又称规则表达式,,是一种文本模式,包括普通字符和特殊字符,是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式的文本。php中文网给大家带来了有关正则表达式的相关教程以及文章,希望对大家能有所帮助。

2023.07.05

2781

4

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

2023.07.05

7642

9

java正则表达式匹配字符串
java正则表达式匹配字符串

在Java中,我们可以使用正则表达式来匹配字符串。本专题为大家带来java正则表达式匹配字符串的相关内容,帮助大家解决问题。

2023.08.11

812

5

正则表达式空格
正则表达式空格

正则表达式空格可以用“\s”来表示,它是一个特殊的元字符,用于匹配任意空白字符,包括空格、制表符、换行符等。本专题为大家提供正则表达式相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.31

520

5

Python爬虫获取数据的方法
Python爬虫获取数据的方法

Python爬虫可以通过请求库发送HTTP请求、解析库解析HTML、正则表达式提取数据,或使用数据抓取框架来获取数据。更多关于Python爬虫相关知识。详情阅读本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.13

673

12

正则表达式空格如何表示
正则表达式空格如何表示

正则表达式空格可以用“\s”来表示,它是一个特殊的元字符,用于匹配任意空白字符,包括空格、制表符、换行符等。想了解更多正则表达式空格怎么表示的内容,可以访问下面的文章。

2023.11.17

386

3

正则表达式中如何匹配数字
正则表达式中如何匹配数字

正则表达式中可以通过匹配单个数字、匹配多个数字、匹配固定长度的数字、匹配整数和小数、匹配负数和匹配科学计数法表示的数字的方法匹配数字。更多关于正则表达式的相关知识详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.12.06

719

7

php正则表达式有哪些
php正则表达式有哪些

php正则表达式有"/pattern/"、"^"、"$"、"."、"[]"、"[^]"、"[a-z]"、"[A-Z]"、"[0-9]"、"\d"、"\D"、"\w"、"\W"、&a

2024.02.23

312

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WEB前端教程【HTML5+CSS3+JS】
WEB前端教程【HTML5+CSS3+JS】

共101课时 | 21万人学习

JavaScript正则表达式基础与实战
JavaScript正则表达式基础与实战

共11课时 | 1.7万人学习

布尔教育正则表达式视频教程
布尔教育正则表达式视频教程

共14课时 | 5.1万人学习