Ich lese eine Datei mit Ruby, in dem ich regexp in meinem Code geschrieben habe, wie unten unter der Annahme, dass es die ersten 4 Bytes aus der Datei liest, die nächsten vier Bytes, die nächsten vier Bytes, den Rest der Bytes in der Datei mit Ausnahme der letzten 8 Bytes aus der Datei . Jetzt versuche ich, Bytes von diesen Daten der variablen Größe (. *) Unter Verwendung des folgenden Codes weiter zu teilen. Ist dieser korrekte Weg? Ich bekomme Ergebnisse, bin aber immer noch unsicher, ob sie korrekt sind oder nicht.Was könnte die richtige Regex sein, um die ersten paar Bytes in der Datei mit fester Größe zu lesen und die restlichen Bytes aus dem ersten Regex-Teil (. *) In Ruby zu lesen?
Ist dies der richtige Weg, um den Inhalt des verbleibenden Sterns Teil des ersten Regex in ersten do..end
zu scannen und dann noch einmal die verbleibenden Bytes im zweiten do..end
Regex zu scannen?
File.open(filename,'rb') do |file|
file.read.scan(/(.{4})(.{4})(.{4})(.*)(.{8})/m).each do |a,b,c,d,e|
puts "\Content 1:#{a}\n\n"
b1 = b.unpack("N")
puts "\n\nContent 2:\n#{b1}\n\n"
puts "\n\nContent 3:\n#{c.unpack("N")}\n\n"
d.scan(/(.{4})(.{4})(.{4})(.*)/).each do |p,q,r,s|
puts "\n\nPContent 4:\n#{p.unpack("N")}\t"
puts "Content 5\n:#{q.unpack("e")}\t"
puts "Content 6:\n#{r.unpack("e")}\t"
s.scan(/(.{4})(.{4})(.{4})(.{4})(.{4})(.{4})(.{4})(.{4})(.{4})(.{4})(.*)/).each do |f,g,h,i,j,k,l,m,n,o,p|
puts "Content 7:#{f.unpack("e")}"
puts "Content 8:#{g.unpack("B")}"
puts "Content 9:#{h.unpack("B")}"
puts "Content 10:#{i.unpack("B")}"
puts "Content 11:#{j.unpack("e")}"
puts "Content 12:#{k.unpack("e")}"
puts "Content 13:#{l.unpack("e")}"
puts "Content 14:#{m.unpack("B")}"
puts "Content 15:#{n.unpack("B")}"
puts "Content 16:\t#{o}#{p}"
end
end
Ich habe dies auf http://rubular.com/r/L4xnGbvukW für Sie geschrieben, es ist ein fantastisches "Instant" -Tool zum Spielen mit Regexp –