检查字符串是否与正则数组中的任何一个匹配?

时间:2014-10-23 12:36:37

标签: ruby

我有一系列正则表达式:[/apple/i, /banana/i, /berry/i]

我还有一个字符串数组str_array。我想迭代str_array并向屏幕输出任何与正则表达式都不匹配的字符串。如果它匹配任何它应该被传递。

我怎么能这样做?

2 个答案:

答案 0 :(得分:3)

str_array = %w[pineapple orange blueberry]
str_array.reject{|e| [/apple/i, /banana/i, /berry/i].any?{|re| re =~ e}}
#=> ["orange"]

答案 1 :(得分:1)

为避免对每个正则表达式进行多次匹配,您可以使用Regexp.union

regexes = [/apple/i, /banana/i, /berry/i]
union_regex = Regexp.union(regexes)
str_array.reject{|e| e =~ union_regex }