On Mar 30, 3:47 pm, James Edward Gray II <j... / grayproductions.net> wrote: > On Mar 30, 2007, at 2:31 PM, Stephen Smith wrote: > > > But I think that the format Harry and Gary suggested clearly > > represents the pattern I'm matching. > > Just FYI, when speed matters it may be worth using unpack: > > #!/usr/bin/env ruby -w > > require "benchmark" > > TESTS = 100_000 > LINE = "XYZ" * 100 > Benchmark.bmbm do |results| > results.report("regex:") do > TESTS.times do > /(.{8})(.{6})(.{15})(.{3})(.{30})(.{4})(.{15})(.{1})(.{12})(. > {9})/.match(LINE).captures.join(",") > end > end > results.report("unpack:") do > TESTS.times do > LINE.unpack("A8A6A15A3A30A4A15A1A12A9").join(",") > end > end > end > # >> Rehearsal ------------------------------------------- > # >> regex: 2.060000 0.000000 2.060000 ( 2.067150) > # >> unpack: 0.760000 0.000000 0.760000 ( 0.762482) > # >> ---------------------------------- total: 2.820000sec > # >> > # >> user system total real > # >> regex: 2.040000 0.000000 2.040000 ( 2.046938) > # >> unpack: 0.770000 0.000000 0.770000 ( 0.763620) > > __END__ > > James Edward Gray II your LINE is 300 characters but you are only unpacking 103 ??????