So I am trying to match email to email domains (ie bob@test to @test.com). Both the array of emails and email domains are in separate arrays. Right now I am trying the following
@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"]
Now I can do stuff with @a
You can use each_with_object with a hash, grep the @emails
array for matching patterns and associate both:
@domains.each_with_object Hash.new do |domain, matches|
matches[domain] = @emails.grep domain
end
It is not clear what you are trying to do with a regex. This is a minimum fix to make it run. It does not use a regex.
@Domains.each do |domain|
if @Emails.any?{|email| email.end_with?(domain)}
#do stuff
end
end