0

红宝石 1.8.7 说:

/Users/user/.thor/916bf40c98406efffe9700e1ef02da24:194: undefined (?...) sequence: /(?<text>Version:)\s*(?<version>[\d\.]+)/

Ruby 1.9.3-p374 说了类似的话,但是 Ruby 1.9.3-p0 可以很好地使用它。

被破坏的实际代码:

pattern = /(?<text>Version:)\s*(?<version>[\d\.]+)/

我究竟做错了什么 ?

4

2 回答 2

2

您的代码在 Ruby 1.9.3-p374 中对我来说很好。我怀疑当您认为您正在使用 1.9.3-p374 时,您做错的事情仍在运行 1.8.7。正如@sawa 所指出的,您的正则表达式正在使用 1.9 中引入的功能。

于 2013-04-29T16:29:23.037 回答
2

(?<k>...)符号表示命名捕获,它是在 Ruby 1.9 中引入的,它使用 Oniguruma 正则表达式引擎。使用 Ruby 1.8,您需要更改正则表达式以不使用它,或者安装 Oniguruma 或 Onigmo(Ruby 2.0 中引入的 Oniguruma 的改进版本)。

于 2013-04-29T16:24:13.117 回答