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 "]
martin
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.
On 7/12/06, Carlos [email protected] wrote:
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