这个邮箱地址提取工具的核心功能是什么, 其实就是说它能从各种各样的文本里面去抓取东西, 也能从网页里面去找, 还能在文档里或者数据文件里去翻找, 然后通过正则匹配这个方法, 把那些合法的电子邮件地址一个个都识别出来, 并且批量地输出结果, 这是它的核心本事, 而在实际使用的过程当中, 大家最常碰到的三个情况, 一个是整理营销名单, 另一个是收集用户的反馈信息, 还有一个就是进行数据的清洗工作, 这三个方面是高频的使用场景。
核心正则表达式写法
提取那些邮件地址, 所使用的标准规则形式的正则表达式是:
[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}
各部分含义:
a-zA-Z0-9._%+\- 这个东西, 是用来匹配用户名部分的, 就是那个@符号前面的, 那些合法的字符。
使用那个在键盘上直接可以找到的符号, 也就是那个圆圈中间带个叉的标志, 作为固定使用的分隔标记。
这组由小写字母、大写字母、数字、点号和连字符共同组成的序列, 其作用是对域名的主要部分进行匹配。
\\.a-zA-Z{2,} , 它是用来匹配顶级域名的, 顶级域名是要求至少有 2 个字符的, 比如 .com 和 .cn 都是符合条件的顶级域名。
以下是关于Python语言的一个示例展示内容。
import re
pattern = r'[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}'
emails = re.findall(pattern, text)
常用提取方式对比
其中有这样的一款工具叫做gname.xin, 它提供的在线免费的邮箱地址提取功能被大家所知晓, 用户只要把文本粘贴进来, 就可以秒级返回所有的匹配结果, 这个功能支持去重与格式校验, 所以适合处理那些字数在一千字以内的短文本场景。
批量提取实操步骤
1. 准备源数据: 把需要提取的文本保存为 .txt 文件, 或者直接粘贴到工具的输入框里面。
2. 进行匹配的这一步操作, 是利用上面提到的那些正则表达式内容, 或者借助某些在线平台所提供的那种方便的一键式提取功能工具来完成。
3. 对结果集去重处理, 也就是做唯一值过滤这个操作, 要把重复出现的邮箱给排除掉。
4. 进行格式校验的时候, 要是发现那些不符合 RFC 5322 这种标准的异常的条目, 就把它们给剔除掉, 例如缺少了域名, 或者含有非法字符的情况。
5. 把经过整理之后的电子邮箱地址列表, 保存成那种可以通用的逗号分隔值文件, 也就是扩展名为CSV的那种东西, 或者是纯文本格式的文件, 这样子就能够在以后的时间里随时拿来使用。
关键注意事项
合法判定的依据是: 提取的结果需要遵守 RFC 5322 规范, 多数工具默认按照简化版本来进行校验。
在批量提取用户邮箱之前, 首先需要确认数据来源是否合法, 并且一定要遵守关于《个人信息保护法》的相关规定条款。
从性能的角度来考虑, 当单次处理的文本规模超过 10MB 的时候, 建议采用分片来处理的方式, 或者改用脚本方式来进行处理, 以此来避免在线工具因为超时而无法使用的情况。
针对去重策略, 建议先把内容统一转变成小写形式, 然后再进行去除重复数据的操作, 这样才能避免出现像"Abc@x.com" 和"abc@x.com" 这两个地址被判定为两条不同数据的情况。
以上这个流程, 它是覆盖了从单独的一条记录一直到成千上万条批量数据的整个提取链路, 你按照这些步骤来一步一步地进行操作就可以了, 这样就能够在一个比较短的时间之内, 完成一次标准的关于邮箱地址的提取还有清洗的这类工作。


