爲什麼這個正則表達式在#jruby中不能在#ruby中正常工作?爲什麼在#ruby中正常工作時,這個正則表達式在#jruby中不起作用?
<Symbol>: /^[\p{Symbol}]+$/
錯誤「無效字符屬性名」
爲什麼這個正則表達式在#jruby中不能在#ruby中正常工作?爲什麼在#ruby中正常工作時,這個正則表達式在#jruby中不起作用?
<Symbol>: /^[\p{Symbol}]+$/
錯誤「無效字符屬性名」
JRuby使用Joni Regexp
library,這是Onigmo Regexp
library由YARV和Rubinius使用手寫行由線C到Java端口。
其實這個故事並不那麼簡單。
首先,有一個名爲Oniguruma的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或兩者提交錯誤。
只是一個快速另外,由於約爾格拼寫出來非常好...
因爲Onigmo實際上並不存在,除非CRuby的一部分,請提交您的問題對JRuby的(http://bugs.jruby.org)。將問題展示爲JRuby錯誤更容易。我們將在JRuby(對應於CRuby中的非Onigmo代碼的代碼)或者JCodings(代碼是Onigmo的代碼)中修復它。
令人驚歎的故事。謝謝! – sashaegorov