我已将多个文件扫描为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
我尝试了多个正则表达式,但我对正则表达式的了解太有限,无法找到所有解决方案。
我使用了来自works的常规电子邮件正则表达式并添加了空格。
(?:[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不仅包含电子邮件。所以一行文字看起来像这样:"电子邮件:example.email @gmail .com?\"
答案 0 :(得分:1)
试试这个:
/^[\w. -]++@[\w. -]++$/gm