以下显示了返回字符串中所有元音的基本方法。
x = "I love Ruby".scan(/[aeiou]/)
如果我将匹配的关键字分配给变量,我是否能够完成上面显示的相同结果?我尝试了这个,但似乎不起作用:
y = %w[bus car truck]
"I drive a bus most times but I have a truck".scan(/[#{y}]/) { |z| puts z }
我想匹配并仅返回确切的值。
答案 0 :(得分:4)
Regexp::union
应该有效:
Regexp.union(y)
#=> /bus|car|truck/
"I drive a bus most times but I have a truck".scan(Regexp.union(y))
#=> ["bus", "truck"]
正则表达式不尊重单词边界。这可能是也可能不是。
答案 1 :(得分:1)
y = Regexp.new %w[bus car truck].join ?|
#=> /bus|car|truck/
"I drive a bus most times but I have a truck".scan y
#=> ["bus", "truck"]