From: Carlos Date: 2006-07-12T21:54:10+09:00 Subject: Re: String#scan puzzlement 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. --