【发布时间】:2018-03-19 09:59:22
【问题描述】:
我已将多个文件扫描为 pdf,现在我想使用正则表达式从这些文件中提取电子邮件。但是 PDF 有时在单词之间有空格,因为它的图像到文本的解释并不完美。由于我不再有纸质文件,因此无法重做扫描。
例如,这些是可能性:
example.email@gmail.com
example.email@g mail.com
example.email@ gmail.com
example.email @ gmail.com
example.email @ gmail .com
example.email @gmail .com
example.email @gm ail .com
example.email @ gmail . com
exa mple.email@gmail.com
exa mple.email @gmail.com
exa mple.email @ gmail.com
exa mple.email @gmail .com
exa mple.email @ gmail .com
exa mplemail @ gmail .com
我尝试了多种正则表达式,但我对正则表达式的了解太有限,无法找到所有解决方案。
我使用来自http://emailregex.com/ 的通用电子邮件正则表达式并添加了空格。
(?:[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-zA-z0-9 ](?:[a-zA-Z0-9- ]*[a-z0-9])?\.)+[a-zA-z0-9](?:[a-zA-z0-9-]*[a-zA-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-zA-z0-9-]*[a-zA-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
此解决方案仅匹配 4 种可能性。
对于查找更多电子邮件有什么建议吗?也欢迎部分解决方案,因为我可以将它们添加到结果中。
注意:pdf 不只包含电子邮件。所以一行文本可能如下所示:“email:example.email@gmail.com?\”
【问题讨论】:
-
请在标签中指定您使用的语言/技术
-
我正在使用程序 Agent Ransack 什么使用 Perl 或 Classic 语法
-
如果您的字符串是“您可以通过 ikegami@example.com 联系我”,您想要什么?还是那不可能?
-
@ikegami 根据它使用 Perl 的文档:help.mythicsoft.com/agentransack/en/regular_expressions.htm
标签: regex pcre email-validation