Reputation: 5929
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
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
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