什么可以是正则表达式用于读取前几个字节的第一行文件,然后是除文件最后一行的最后8个字节之外的其余文件内容?

时间:2012-04-03 09:54:01

标签: ruby regex file byte

我正在处理一个二进制文件,其中我要检索前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中的正则表达式是什么?

2 个答案:

答案 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