Что может быть Regex для чтения первой строки файла с несколькими первыми байтами, а затем с остальным содержимым файла, кроме последних 8 байтов последней строки файла? - PullRequest
0 голосов
/ 03 апреля 2012

Я обрабатываю один двоичный файл, в котором я хочу получить первые 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 ]

2 голосов
/ 03 апреля 2012

Использовать #read вместо регулярного выражения:

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 голос
/ 03 апреля 2012

Как насчет:

/(.{4})(.{3})(.{4})(.*).{8}/m
...