如何使用Regex搜索数组?

所以我试图将电子邮件与电子邮件域匹配(即bob @ test to @ test.com)。 电子邮件和电子邮件域的数组都在单独的数组中。 现在我正在尝试以下方法:

@Domains.each do |domain| if @Emails.include?(/.*/ + domain) then #do stuff end end 

这显然是错误,我找不到另一种解决方案。 有任何想法吗?

目前尚不清楚你正在尝试用正则表达式做什么。 这是使其运行的最低限度。 它不使用正则表达式。

 @Domains.each do |domain| if @Emails.any?{|email| email.end_with?(domain)} #do stuff end end 

您可以将each_with_object与散列一起使用, grep @emails数组以匹配模式并关联它们:

 @domains.each_with_object Hash.new do |domain, matches| matches[domain] = @emails.grep domain end 
 @domains = ["hotmail.com", "gmail.com"] @emails = ["blah@hotmail.com", "you@yahoo.com", "me@gmail.com"] @a = [] @domains.each {|d| @a << @emails.select{ |e| e=~ /#{d}/ } } @a.flatten! #=> ["blah@hotmail.com", "me@gmail.com"] 

现在我可以用@a做点什么