我有一个非常大的文本文件,958 MB我已经创建了以下脚本
f = IO.read ("Playback.xml").encode ("utf-8", replace: nil)
separate_files_array = f.scan /strong text<Bla>.*?<\/Bla>/
counter=0
separate_files_array.each do |x|
.
.
.
end
以下代码仅迭代该正则表达式的前31个出现 - 我不知道为什么。
不,这些都不会发生,我可以看到它没有,并且脚本运行了几秒钟 - 这对于大小的文件没有任何意义
答案 0 :(得分:0)
问题是IO.read
在默认情况下创建缓冲区 - 并且只加载部分文件到缓存 - 最后我使用以下内容来回答我的问题
Regexp search through a very large file
原因是因为File.read没有在默认情况下创建缓冲区 - 当使用太大的文件时会导致程序崩溃。