为什么#jruby中的正则表达式在#ruby中工作正常时不起作用?

时间:2016-01-18 21:50:54

标签: ruby regex jruby

为什么#jruby中的正则表达式在#ruby中工作正常时无效?

<Symbol>: /^[\p{Symbol}]+$/

错误&#34;无效的字符属性名称&#34;

2 个答案:

答案 0 :(得分:4)

JRuby使用Joni Regexp library,这是由Onigmo Regexp library和{{{{}}使用的YARV手写的逐行C-to-Java端口。 3}}

实际上,故事并不那么简单。

首先,有一个名为RubiniusRegexp库。然后将此库导入YARV源树,从而有效地分叉。 YARV开发人员为他们自己的分支添加了功能,其中一些已合并回Oniguruma本身,有些没有。 Oniguruma开发人员增加了一些功能,其中一些已合并到YARV分支中,有些没有。

在那段时间里,JRuby开发人员放弃了尝试在Java正则表达式之上支持Ruby语义,并将Oniguruma从C语言逐行转换为Java。生成的库名为Joni。当然,Oniguruma及其YARV分支继续开发,Joni开发人员必须尝试跟踪该开发。

快进几年,创建了Oniguruma的另一个分支,称为Onigmo,它会分发最新版本的Oniguruma,并添加了YARV开发人员添加的许多功能。 YARV开发人员抛出他们自己的Oniguruma分支,而是导入他们自己的Onigmo分支。

Joni必须努力跟上所有这些。

简而言之:它可能是一个错误:某个时候,某个地方,某些东西丢失,错误翻译,或者只是简单的错误。它发生了。

您应该针对JRuby或Joni或两者提交错误。

答案 1 :(得分:0)

只是一个快速的补充,因为Jorg非常清楚地说明了它......

因为除了作为CRuby的一部分外,Onigmo并不存在,请将您的问题提交给JRuby(http://bugs.jruby.org)。将问题演示为JRuby错误更容易。我们将在JRuby(对应于CRuby中的非Onigmo代码的代码)或JCodings(对于Onigmo的部分代码)中修复它。