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
>
>