为什么这个正则表达式在 #ruby 中工作正常,但在 #jruby 中却不起作用?
<Symbol>: /^[\p{Symbol}]+$/
错误“字符属性名称无效”
JRuby使用JoniRegexp库,它是YARV和Rubinius使用的OnigmoRegexp库的手写逐行 C 到 Java 移植。
事实上,故事并不那么简单。
首先,有一个名为OnigurumaRegexp的图书馆。然后将该库导入到 YARV 源代码树中,从而有效地分叉。YARV 开发人员向他们自己的分支添加了功能,其中一些被合并回 Oniguruma 本身,一些则没有。Oniguruma 开发人员添加了功能,其中一些已合并到 YARV 分支中,有些则没有。
在那段时间的某个时刻,JRuby 开发人员放弃了在 Java 正则表达式之上支持 Ruby 语义的尝试,而是将 Oniguruma 从 C 逐行转换为 Java。由此产生的库称为 Joni。当然,Oniguruma 及其 YARV 分支仍在继续开发,Joni 开发人员必须尝试并跟踪该开发。
快进几年,Oniguruma 的另一个分支被创建,称为 Onigmo,它分支了 Oniguruma 的最新版本,并添加了 YARV 开发人员添加的许多功能。YARV 开发者抛弃了他们自己的 Oniguruma 分支,转而导入他们自己的 Onigmo 分支。
乔尼必须努力跟上这一切。
简而言之:这可能是一个错误:有时,在某个地方,某些东西丢失了,翻译错误了,或者只是简单的错误。它发生了。
您应该针对 JRuby 或 Joni 或两者都提交错误。