我有以下文字'some-text-here'
并尝试使用群组获取'text'
字词。
如果我使用该表达式/some-(\w+)-here/
一切正常,但如果我尝试对其应用分组/some-(?<group_name>\w+)-here/
则会引发错误Undefined (?...) sequence.
我做错了什么?
(Ruby 1.9.2)
更新:对我感到羞耻。这完全取决于我的经营权。是的,我使用RVM,我的ruby版本打开了1.9.2。但是我在http://rubular.com/测试了那个表达式,它在页脚Rubular runs on Ruby 1.8.7
处写出来。 Ruby 1.8.7和Ruby 1.9.2有一个不同的正则表达式引擎。
所以我的表达在1.9.2上工作,但在上
答案 0 :(得分:10)
对我来说,看起来你正在看错了Ruby。你可能安装了RVM吗?
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
答案 1 :(得分:1)
很抱歉挖掘这个,但我的客户端有ruby 1.8.7,我需要使用使用组的正则表达式替换文本。
有没有办法用ruby 1.8.7做到这一点?
答案 2 :(得分:0)
这些是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"