有没有人知道是否有办法在正则表达式中使用数组?假设我想知道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)/)
答案 0 :(得分:4)
您可以使用Regexp.union
,它会返回与任何给定正则表达式匹配的Regexp
。参数模式可以是String
或Regexp
:
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