我有两个数组:
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中执行此操作?
答案 0 :(得分:4)
我会这样做:
a.grep(Regexp.union(b))
# => ["X3/X4", "X8/X9/X10/X11"]
答案 1 :(得分:2)
这应该有效:
a.grep(/#{b.join('|')}/)
# => ["X3/X4", "X8/X9/X10/X11"]
答案 2 :(得分:2)
尝试以下方法:
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"]
答案 3 :(得分:0)
最安全的方法是构建一个正则表达式,然后选择与此表达式匹配的数组元素:
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"]