1

JRuby 1.7.18 を使用していますが、JRuby 9000 (最新バージョン) でも同じエラーが発生します。soap-4rとライブラリを使用しnokogiriて wsdl xml ファイルを解析しています。

wsdl の以下の部分が解析されると、

<xs:pattern value="[\p{IsBasicLatin}]*"/>

次のエラーが表示されます

RegexpError: (RegexpError) invalid character property name <IsBasicLatin>: /\A[\p{IsBasicLatin}]*\z/n
nokogiri/XmlSaxParserContext.java:252:in `parse_with'
nokogiri/XmlSaxParserContext.java:252:in `parse_with'
nokogiri/XmlSaxParserContext.java:252:in `parse_with'

JRuby 1.7.18 が対応している Ruby のバージョンの 1 つである Ruby 1.9 では、 のような文字ブロック\p{IsBasicLatin}はサポートされていないと読みました。ただし、次のようなスクリプト\p{Latin}はサポートされています。に変更しようとしましIsBasicLatinたが、 andLatinのような他のいくつかのものを試してみましたが、それらはすべて同じエラーを返します。InBasicLatinInBasic_Latin

これは、JRuby 1.7.18 と最新バージョンである JRuby 9000 の両方にあります。

ここで何が問題になっていますか?どうすれば修正できますか?

4

1 に答える 1

0

コメントで述べたように、文字プロパティの名前は実際にはIn_Basic_LatinありませんIsBasicLatin。Ruby の最新バージョン (具体的には MRI または CRuby) は、正規表現ライブラリ Onigmo を使用します。Ruby の公式ドキュメントにはすべての Unicode プロパティが記載されているわけではありませんが、幸いにもOnigmo には記載されています。

どうやら JRuby は (少なくとも) Unicode ブロックのものを実装していないようです。ただし、ブロックに関する情報 (名前と範囲) は公開されています\p{In_Basic_Latin}したがって、 と同等[\u0000-\u007F]です。そうです[[:ascii:]]

于 2015-08-10T20:48:19.063 に答える