From: Jim McKerchar Date: 2008-11-13T01:11:20+09:00 Subject: Re: Ruby Sub Regular Expression Hi. You missed out your non-greedy operator (if thats the right term) in your regex. Try: a = "Hello - 1 - World" c = a.sub(/.*?\s-\s/, "") irb(main):004:0> c = a.sub(/.*?\s-\s/, "") => "1 - World" Hope that helps Jim Dave Roberts wrote: > Hello! I have a string: "Hello - 1 - World" > > irb(main):017:0> a = "Hello - 1 - World" > => "Hello - 1 - World" > > I want to chop off the "Hello - " part. Hello could be any word, so I > want to match it generically. > To match the first minus I do this: > > irb(main):018:0> b = a.sub(/\s-\s/, "") > => "Hello1 - World" > > Good! Now to get rid of the first word I try this: > > irb(main):019:0> c = a.sub(/.*\s-\s/, "") > => "World" > > Bad! It matched to the second minus! Why does sub do this? I thought > it was supposed to match the first occurrence only. > > ------------------------------------------------------------------------ > > > No virus found in this incoming message. > Checked by AVG - http://www.avg.com > Version: 8.0.175 / Virus Database: 270.9.0/1777 - Release Date: 09/11/2008 09:53 > >