From: Robert Klemme Date: 2013-05-27T02:18:07+09:00 Subject: Re: Regular expression to find a break in a pattern --047d7b6da8321a530004dda237b3 Content-Type: text/plain; charset=ISO-8859-1 On Fri, May 24, 2013 at 12:43 PM, Joel Pearson wrote: > Excellent! I tried negatives using (?!\1) before but I couldn't get them > to work. Thanks for the help. > You can even get the whole line content if you like irb(main):053:0> s.scan %r{(To:\s+("\d+")\s*$\s*From:\s+(?!\2).*?(?=To))}m => [["To: \"1313133\"\nFrom: \"1313132\"\nrandom data lines\n\n", "\"1313133\""]] irb(main):054:0> s.scan(%r{(To:\s+("\d+")\s*$\s*From:\s+(?!\2).*?(?=To))}m).map(&:first) => ["To: \"1313133\"\nFrom: \"1313132\"\nrandom data lines\n\n"] irb(main):055:0> puts s.scan(%r{(To:\s+("\d+")\s*$\s*From:\s+(?!\2).*?(?=To))}m).map(&:first) To: "1313133" From: "1313132" random data lines Or with a block: irb(main):057:0> s.scan %r{(To:\s+("\d+")\s*$\s*From:\s+(?!\2).*?(?=To))}m do puts $1 end;nil To: "1313133" From: "1313132" random data lines Kind regards robert -- remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/ --047d7b6da8321a530004dda237b3 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable



On Fri, May 24, 2013 at 12:43 PM, Joel Pearson &l= t;lists@ruby-foru= m.com> wrote:
Excellent! I tried negatives using (?!\1) before but I cou= ldn't get them
to work. Thanks for the help.

You= can even get the whole line content if you like

=
irb(main):053:0> s.scan %r{(To:\s+("\d+")\s*$\s*From:\s+(= ?!\2).*?(?=3DTo))}m
=3D> [["To: \"1313133\"\nFrom: \"1313132\"= \nrandom data lines\n\n", "\"1313133\""]]
irb(main):054:0> s.scan(%r{(To:\s+("\d+")\s*$\s*From:\s+(?!\= 2).*?(?=3DTo))}m).map(&:first)
=3D> ["To: \"1313133\"\nFrom: \"1313132\"\= nrandom data lines\n\n"]
irb(main):055:0> puts s.scan(%r{= (To:\s+("\d+")\s*$\s*From:\s+(?!\2).*?(?=3DTo))}m).map(&:firs= t)
To: "1313133"
From: "1313132"
= random data lines

Or with a block:

irb(main):057:0> s.scan %r{(To:\s+(&quo= t;\d+")\s*$\s*From:\s+(?!\2).*?(?=3DTo))}m do puts $1 end;nil
To: "1313133"
From: "1313132"
= random data lines

Kind regards

robert


--
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/= --047d7b6da8321a530004dda237b3--