ck3g
ck3g

Reputation: 5929

ruby regex and grouping

I've got following text 'some-text-here' and try to get the 'text' word from it using groups.

If I use that expression /some-(\w+)-here/ all works fine, but if I try to apply grouping to it /some-(?<group_name>\w+)-here/ it's raise an error Undefined (?...) sequence.

What's I doing wrong?

(Ruby 1.9.2)

Upd: shame on me. It's all from my innatention. Yes, I've use RVM and my ruby version turned on 1.9.2. But I've tested that expression at http://rubular.com/ where it is written at the footer Rubular runs on Ruby 1.8.7. Ruby 1.8.7 and Ruby 1.9.2 have a different regular expression engine. So my expression works on 1.9.2, but does not on 1.8.7

Upvotes: 10

Views: 5700

Answers (2)

Michael Kohl
Michael Kohl

Reputation: 66837

For me that looks like you are looking at the wrong Ruby. Do you maybe have RVM installed?

1.9.2

>> RUBY_VERSION 
=> "1.9.2"
>> s='some-text-here' 
=> "some-text-here"
>> /some-(?<group_name>\w+)-here/ =~ s 
=> 0
>> group_name #=> "text"

1.8.7

>> RUBY_VERSION
=> "1.8.7"
>> s='some-text-here'
=> "some-text-here"
>> /some-(?<group_name>\w+)-here/ =~ s
SyntaxError: compile error
(irb):2: undefined (?...) sequence: /some-(?<group_name>\w+)-here/
    from (irb):2

Upvotes: 10

Hector Castro
Hector Castro

Reputation: 423

These are my results with 1.9.2-p290:

irb(main):004:0> "some-text-here".match(/some-(?<test>\w+)-here/)
=> #<MatchData "some-text-here" test:"text">
irb(main):005:0> RUBY_VERSION
=> "1.9.2"

Upvotes: 0

Related Questions