我有一个格式如下的 csv 文件:
Wed Mar 07 00:00:00 CET 2012,78.0
Thu Mar 08 00:00:00 CET 2012,46.0
...
我使用标准输入阅读它,并尝试使用以下方法匹配每行的部分内容:
ARGF.each_line do |line|
time << line.scan(/^\w{3} (\w{3}) (\d{2}) (\d{2}:\d{2}:\d{2}) \w+ (\d{4}),([.\d]+)$/)
end
由于某种原因,它只返回文件中的最后一行。
如果我将 CSV 文件复制到字符串变量,它会开始正确匹配每一行。如果我从正则表达式中删除美元符号,它也会正确匹配,但我不明白为什么$
从 ARGF 读取时不起作用。有任何想法吗?