From: Martin DeMello Date: 2006-07-12T21:59:30+09:00 Subject: Re: String#scan puzzlement On 7/12/06, Carlos wrote: > Martin DeMello wrote: > > I'm trying to match sequences of capitalised words - can someone > > explain why the second regexp works but not the first? > > > > irb(main):001:0> a = "And then we Went to The Next Place to be" > > => "And then we Went to The Next Place to be" > > irb(main):002:0> a.scan /([A-Z]\w+\s+)+/ > > => [["And "], ["Went "], ["Place "]] > > irb(main):003:0> a.scan /(?:[A-Z]\w+\s+)+/ > > => ["And ", "Went ", "The Next Place "] > > Because when you group, scan returns arrays with [$1, $2, $3...], etc., > but in "to The Next Place to be" =~ /([A-Z]\w+\s+)+/ there is only $1. > Put the last "+" inside a group. ah! that makes things a lot clearer, thanks. martin