为什么这个正则表达式在 #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.

其实,故事并没有那么简单。

首先,有一个名为 OnigurumaRegexp 库。然后将该库导入到 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 的代码)中修复它。