为什么这个正则表达式在 #ruby 中工作正常,但在 #jruby 中却不能工作?
Why does this regex not work in #jruby when it works fine in #ruby?
为什么这个正则表达式在 #ruby 中可以正常工作,而在 #jruby 中却不能工作?
<Symbol>: /^[\p{Symbol}]+$/
错误"invalid character property name"
JRuby uses the Joni Regexp
library, which is a hand-written line-by-line C-to-Java port of the Onigmo Regexp
library used by YARV and Rubinius.
其实,故事并没有那么简单。
首先,有一个名为 Oniguruma 的 Regexp
库。然后将该库导入到 YARV 源代码树中,从而有效地进行分叉。 YARV 开发人员将功能添加到他们自己的分支中,其中一些被合并回 Oniguruma 本身,一些没有。 Oniguruma 开发人员添加了一些功能,其中一些已合并到 YARV 分支中,有些则没有。
在那段时间的某个时候,JRuby 开发人员放弃了在 Java 正则表达式之上支持 Ruby 语义的尝试,并进行了 line-by-line 翻译Oniguruma 从 C 到 Java。生成的库称为 Joni。当然,Oniguruma 及其 YARV 分支仍在开发中,Joni 开发人员必须尝试跟踪该开发。
快进几年,创建了另一个 Oniguruma 分支,称为 Onigmo,它分支了最新版本的 Oniguruma 并添加了许多由 YARV 开发人员添加的功能。 YARV 开发人员放弃了他们自己的 Oniguruma 分支,而是导入了他们自己的 Onigmo 分支。
Joni 必须努力跟上这一切。
简而言之:这可能是一个错误:某时某处,某些东西丢失了,mis-translated,或者只是普通的错误。它发生了。
您应该提交针对 JRuby 或 Joni 或两者的错误。
只是一个快速补充,因为 Jorg 拼写得很好...
因为 Onigmo 除了作为 CRuby 的一部分之外并不真正存在,请针对 JRuby (http://bugs.jruby.org) 提交您的问题。将问题演示为 JRuby 错误会更容易。我们将在 JRuby(对于对应于 CRuby 中的 non-Onigmo 代码的代码)或 JCodings(对于属于 Onigmo 的代码)中修复它。
为什么这个正则表达式在 #ruby 中可以正常工作,而在 #jruby 中却不能工作?
<Symbol>: /^[\p{Symbol}]+$/
错误"invalid character property name"
JRuby uses the Joni Regexp
library, which is a hand-written line-by-line C-to-Java port of the Onigmo Regexp
library used by YARV and Rubinius.
其实,故事并没有那么简单。
首先,有一个名为 Oniguruma 的 Regexp
库。然后将该库导入到 YARV 源代码树中,从而有效地进行分叉。 YARV 开发人员将功能添加到他们自己的分支中,其中一些被合并回 Oniguruma 本身,一些没有。 Oniguruma 开发人员添加了一些功能,其中一些已合并到 YARV 分支中,有些则没有。
在那段时间的某个时候,JRuby 开发人员放弃了在 Java 正则表达式之上支持 Ruby 语义的尝试,并进行了 line-by-line 翻译Oniguruma 从 C 到 Java。生成的库称为 Joni。当然,Oniguruma 及其 YARV 分支仍在开发中,Joni 开发人员必须尝试跟踪该开发。
快进几年,创建了另一个 Oniguruma 分支,称为 Onigmo,它分支了最新版本的 Oniguruma 并添加了许多由 YARV 开发人员添加的功能。 YARV 开发人员放弃了他们自己的 Oniguruma 分支,而是导入了他们自己的 Onigmo 分支。
Joni 必须努力跟上这一切。
简而言之:这可能是一个错误:某时某处,某些东西丢失了,mis-translated,或者只是普通的错误。它发生了。
您应该提交针对 JRuby 或 Joni 或两者的错误。
只是一个快速补充,因为 Jorg 拼写得很好...
因为 Onigmo 除了作为 CRuby 的一部分之外并不真正存在,请针对 JRuby (http://bugs.jruby.org) 提交您的问题。将问题演示为 JRuby 错误会更容易。我们将在 JRuby(对于对应于 CRuby 中的 non-Onigmo 代码的代码)或 JCodings(对于属于 Onigmo 的代码)中修复它。