正则表达式插入变量与非转义\字符

时间:2017-01-05 23:40:28

标签: ruby regex

我有以下尝试解析Unrar提取.rar的输出。我有以下行抛出错误:太短的转义序列。这是由变量 extractLocation 等于没有转义的\ characters(例如I:\ Rar \ Backups \)的文件路径引起的。有没有办法在我的正则表达式中引用此变量的文字字符串解释?如果没有,我可以采取哪些其他方法来解决这个问题?

stdoutArr = stdout.split("\n")

stdoutArr.each do |line|
#line below is throwing the error   
if line.match(/((?<=(Extracting  #{extractLocation})).*.bak)/)
        extractedFile = line[(/((?<=(Extracting  #{extractLocation})).*.bak)/)]
    end
end

1 个答案:

答案 0 :(得分:4)

试试这个

regexp = /((?<=(Extracting  #{Regexp.escape(extractLocation)})).*.bak)/

这是如何运作的?

  • Regexp.escape(...)转义所有特殊字符