我当前的代码旨在遍历一个庞大的.csv文件,并将某些日期重新格式化为SQL Datetime友好的格式。它们当前是DDMMYYYY,我希望它们是YYYYMMDD,这是我采取的方法(取自一个不同的SO问题):
CSV.foreach('file.csv') do |x|
if x[0] == "1"
x.gsub(/([0-9]{2})-+([0-9]{2})-+([0-9]{4})/,/\3-\2-\1/)
else
end这会抛出错误"invalid backref number/name“。
文档告诉我,我可以通过使用?<name>定义组并使用\k<name>反向引用它们来避免这种情况,但我所有的尝试都以失败告终。有人可以告诉我它应该是什么样子的吗,或者提供一个替代的解决方案?
发布于 2015-07-21 07:32:56
我认为值得补充的是,虽然上面的答案是正确的,但它们没有解决OP得到的错误。如果第二个参数是正则表达式,则此错误不是问题。事实上,在上面的例子中,ruby从未真正调用过gsub方法,因为第二个参数中的正则表达式不会被解析。反斜杠后跟任何数字都会导致此错误。它是无效的正则表达式。
https://stackoverflow.com/questions/15347009
复制相似问题