我有以下尝试解析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
答案 0 :(得分:4)
试试这个
regexp = /((?<=(Extracting #{Regexp.escape(extractLocation)})).*.bak)/
这是如何运作的?
Regexp.escape(...)
转义所有特殊字符