使用ruby从一些.txt文档中提取所有电子邮件地址
我必须从一些.txt文档中提取所有电子邮件地址。 这些电子邮件可能具有以下格式:
a@abc.com
-
{a, b, c}@abc.edu
- 一些其他格式,包括一些
@
标志。
我选择ruby作为我的第一语言来编写这个程序,但我不知道如何编写正则表达式。 有人会帮助我吗? 谢谢!
根据.txt文档的性质,您不必使用其中一个尝试validation电子邮件地址的复杂正则表达式。 你不是想要validation任何东西。 你只是想抓住已有的东西。 一般来说,获取已有内容的正则表达式比需要validation输入的正则表达式简单得多。
一个重要的问题是.txt文档是否包含不属于要提取的电子邮件地址的@符号。
这个正则表达式处理你的前两个要求:
\w+@[\w.-]+|\{(?:\w+, *)+\w+\}@[\w.-]+
或者,如果您想允许包含@符号的任何非空格字符序列加上您的第二个要求(具有空格):
\S+@\S+|\{(?:\w+, *)+\w+\}@[\w.-]+
看看这个相当深入的分析 :
Upshot使用这个正则表达式:
/^([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*[\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+@((((([a-z0-9]{1}[a-z0-9\-]{0,62}[a-z0-9]{1})|[az])\.)+[az]{2,6})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)$/i
在https://www.shellhacks.com/regex-find-email-addresses-file-grep/找到了这个,满足了我的需求:
\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b