2

我有两个数组:

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 中做到这一点?

4

4 回答 4

4

我会做:

a.grep(Regexp.union(b))
# => ["X3/X4", "X8/X9/X10/X11"] 
于 2013-07-11T13:42:30.580 回答
2

这应该有效:

a.grep(/#{b.join('|')}/)
# => ["X3/X4", "X8/X9/X10/X11"]
于 2013-07-11T13:39:10.650 回答
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"]
于 2013-07-11T13:39:14.303 回答
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"]
于 2017-04-19T21:56:33.187 回答