使用正则表达式查找带空格的无效电子邮件

Finding invalid emails with spaces using Regex

我已将多个文件扫描为 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?\"

试试这个:

/^[\w. -]++@[\w. -]++$/gm