我有两个数组:
a = ["X2", "X3/X4", "X5/X6/X7", "X8/X9/X10/X11"]
b = ["X9/X10", "X3/X4"]
现在我需要从“a”数组中选择条目,该数组正则表达式与数组“b”中的任何条目。
预期结果是:
["X3/X4", "X8/X9/X10/X11"]
我怎样才能在 Ruby 中做到这一点?
我会做:
a.grep(Regexp.union(b))
# => ["X3/X4", "X8/X9/X10/X11"]
这应该有效:
a.grep(/#{b.join('|')}/)
# => ["X3/X4", "X8/X9/X10/X11"]
试试下面的:
a = ["X2", "X3/X4", "X5/X6/X7", "X8/X9/X10/X11"]
b = ["X9/X10", "X3/X4"]
p a.select{|i| b.any?{|j| i.include? j }}
#>> ["X3/X4", "X8/X9/X10/X11"]
最安全的方法是构建一个正则表达式,然后选择与该表达式匹配的数组元素:
Regexp.union("a", "b", "c")
# => /a|b|c/
Regexp.union(["a", "b", "c"])
# => /a|b|c/
("b".."e").to_a.grep(Regexp.union("a", "b", "c"))
# => ["b", "c"]