在正则表达式中使用数组?

时间:2015-06-28 03:36:14

标签: arrays ruby regex

有没有人知道是否有办法在正则表达式中使用数组?假设我想知道somefile.txt是否包含数组元素之一。显然,下面的代码不起作用,但有类似的东西可行吗?

array = [thing1 thing2 thing3]
file = File.open("somefile.txt")

file.each_do |line|
if /array/.match(line)
puts line
end

基本上我有一个文件,其中包含我需要在另一个大文件中用作搜索词的单词列表,我想避免这样的事情:

($somefile =~ /(thing1|thing2|thing3)/)

2 个答案:

答案 0 :(得分:4)

您可以使用Regexp.union,它会返回与任何给定正则表达式匹配的Regexp。参数模式可以是StringRegexp

Regexp.union(%w(thing1 thing2 thing3))
#=> /thing1|thing2|thing3/

Regexp.union(/thing1/, /thing2/, /thing3/)
#=> /(?-mix:thing1)|(?-mix:thing2)|(?-mix:thing3)/

答案 1 :(得分:0)

使用:

x = ['qwe', 'asd', 'zxc']
file = File.open("somefile.txt")
regexp = /(#{x.join '|'})/
file.each_do |line|
  puts line if regexp.match(line)
end