From: Naga Vijay Date: 2012-08-29T23:22:44+09:00 Subject: Re: Regex Non Greedy Match Robert Klemme wrote in post #1073731: > On Wed, Aug 29, 2012 at 3:48 AM, Regis d'Aubarede > wrote: >>> re = /@\[Subject:\d+\|(.*)\]/ >> >> try : >> re = /@\[Subject:\d+\|(.*?)\]/ >> >> test : >> str2.scan re >> => [["My_Subject"], ["Your_Subject"]] > > In this case we can also use a character class which excludes closing > square bracket: > > irb(main):004:0> [str1,str2].each {|s| printf "%s -> %p\n", s, > s.scan(/\[Subject:\d+\|([^\]]*)\]/)} > Hi, @[Subject:13|My_Subject] -> [["My_Subject"]] > Hi, @[Subject:13|My_Subject], and @[Subject:45|Your_Subject] -> > [["My_Subject"], ["Your_Subject"]] > > irb(main):005:0> [str1,str2].each {|s| printf "%s -> %p\n", s, > s.scan(/\[Subject:\d+\|([^\]]*)\]/).flatten} > Hi, @[Subject:13|My_Subject] -> ["My_Subject"] > Hi, @[Subject:13|My_Subject], and @[Subject:45|Your_Subject] -> > ["My_Subject", "Your_Subject"] > > Kind regards > > robert Excellent! Thanks very much, Robert! Naga Vijay -- Posted via http://www.ruby-forum.com/.