Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 从文本块中提取电子邮件地址_Ruby_Regex - Fatal编程技术网

Ruby 从文本块中提取电子邮件地址

Ruby 从文本块中提取电子邮件地址,ruby,regex,Ruby,Regex,如何创建包含在文本块中的电子邮件地址数组? 我试过了 addrs=text.scan(/.+?@.+?/).map{e|e[1…-1]} 但是(毫不奇怪)它不能可靠地工作 对于一个(稍微)更好的正则表达式来说,这个怎么样 \b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b 你可以在这里找到: 仅供参考,您的电子邮件存在的问题是,在电子邮件地址之前或之后,您只允许使用一种类型的分隔符。如果用空格分隔,您将单独匹配“@”。@Mehrdad:不同意。正则表达式服务

如何创建包含在文本块中的电子邮件地址数组? 我试过了

addrs=text.scan(/.+?@.+?/).map{e|e[1…-1]}

但是(毫不奇怪)它不能可靠地工作

对于一个(稍微)更好的正则表达式来说,这个怎么样

\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b
你可以在这里找到:


仅供参考,您的电子邮件存在的问题是,在电子邮件地址之前或之后,您只允许使用一种类型的分隔符。如果用空格分隔,您将单独匹配“@”。

@Mehrdad:不同意。正则表达式服务于一个目的,但如果使用得当,它的服务效果会非常好。检测电子邮件地址效果很好。卡马丁:我什么也没说!我刚刚链接到杰夫的相关帖子:)真的。。。不得不说这是我见过的最丑的电子邮件比赛。。。而且可能完全无法维护。。。有时,正则表达式的良好可读性比正则表达式的“完美”更重要。有些TLD长度超过4个字符,例如“.museum”。文章中:“最常引用的例子是.museum顶级域上的地址,它比我的正则表达式允许的顶级域的4个字母长。我接受这种权衡,因为使用.museum电子邮件地址的人数非常少”,这减少了虚假的pos。完成上面解释的引用:“要包括.museum,您可以使用^[A-Z0-9.\%+-]+@[A-Z0-9.-]+\[A-Z]{2,6}$。然而,还有另一个权衡。这个正则表达式将匹配john@mail.office. 约翰更可能忘记在.com顶级域中键入“谢谢。我有一个语法错误。我不是一个有经验的程序员,这个正则表达式的东西让我头疼。下面是错误的一行:text.scan(\b[a-Z0-9.\u%+-]+@[a-Z0-9.-+\[a-Z0-9.-+\[a-Z]{2,4}\b)。map{e{124; e+[1…-1]}text.scan(\b[a-Z0-9.\u%++-].map{| e | e[1…-1]}@cmartin:fair够了,+1.)