为什么#jruby中的正则表达式在#ruby中工作正常时无效?
<Symbol>: /^[\p{Symbol}]+$/
错误&#34;无效的字符属性名称&#34;
答案 0 :(得分:4)
JRuby使用Joni Regexp
library,这是由Onigmo Regexp
library和{{{{}}使用的YARV手写的逐行C-to-Java端口。 3}}
实际上,故事并不那么简单。
首先,有一个名为Rubinius的Regexp
库。然后将此库导入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的部分代码)中修复它。