如何使用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
做点什么