0
我试图传递正则表达式来逐行处理文件。正则表达式工作正常,如果我在代码中硬编码它,像这样。将正则表达式作为脚本参数传递Ruby
File.foreach(filename).with_index do |line, line_num|
md5 = line.scan(/[0-9a-f]{32}/i)
puts md5
end
这工作很好,我可以看到每一行上有MD5哈希打印。现在,问题是当我尝试通过正则表达式匹配MD5哈希像一个脚本参数:
ruby md5.rb -h "/[0-9a-f]{32}/i"
options = {}
OptionParser.new do |opts|
opts.on('-h', '--hash "<hash regex>"', 'Hash Regex') { |v| options[:hash] = v }
end.parse!
hash = options[:hash]
File.foreach(filename).with_index do |line, line_num|
md5 = line.scan(hash)
puts md5
end
除了插值之外,还可以使用'Regexp.new(regex_string)',如果表达式无效,将会抛出'RegexpError'。 –