我正在处理一个二进制文件,其中我要检索前4个字节,接下来的4个字节,再4个字节,然后是除最后一行的最后8个字节之外的其余文件内容。
我已尝试使用此行file.read.scan(/(.{4})(.{4})(.{4})(.*\w)(.{8})/).each do |a,b,c,d,e|
,但经过一些迭代后,此正则表达式从中间的某行开始,前4个字节,后4个字节,后4个字节模式。因此,我的条件检查失败。
我想做以下事情。 读取第一行文件的前4个字节,然后是字节5到7,然后是字节8到11,然后是文件内容的其余部分,除了文件最后一行的最后8个字节。
Ruby中的正则表达式是什么?
答案 0 :(得分:2)
使用#read而不是regexp:
f = File.open(file_name,"rb")
chunk1 = f.read(4)
chunk2 = f.read(3)
chunk3 = f.read(4)
chunk4 = f.read(f.size - (4 + 3 + 4 + 8))
答案 1 :(得分:1)
怎么样:
/(.{4})(.{3})(.{4})(.*).{8}/m