Я использую JRuby 1.7.18 и даже попробовал это в JRuby 9000 (последняя версия), где я получаю ту же ошибку. Я использую библиотеки soap-4r
и nokogiri
для разбора файла wsdl xml.RegexpError в Ruby при анализе свойства символа p {IsBasicLatin}
Когда ниже часть 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'
В Ruby 1.9, которая является одной из версий Ruby, что JRuby 1.7.18 совместим с, я читал, что блоки символов, такие как \p{IsBasicLatin}
, не поддерживаются. Но поддерживаются сценарии, такие как \p{Latin}
. Я попытался изменить IsBasicLatin
на Latin
и даже попробовал несколько других, таких как InBasicLatin
и InBasic_Latin
, но все они возвращают ту же ошибку.
Это как в JRuby 1.7.18, так и в JRuby 9000, которая является последней версией.
Что здесь не так, и как я могу это исправить?
Это 'In_Basic_Latin'. Возможно, кодировка regexp не является Unicode (модификатор 'u' для UTF-8, но это должно быть значение по умолчанию), или JRuby 9000 не поддерживает свойства символа (по крайней мере, те)? – cremno
@cremno Я попробовал 'In_Basic_Latin' и получил ту же ошибку. Кроме того, я думал, что это проблема с Unicode, поэтому я искал исходный код nokogiri, и его кодировка определенно устанавливается в 'UTF-8'. Там он жестко закодирован. Если его как-то не потерять, когда он перейдет на Java. Если вы заметили в моем журнале ошибок выше исходных файлов, это фактически классы java. – Graham
Сообщите об этом команде JRuby. 'IsBasicLatin' ошибочен (в Ruby), но' In_Basic_Latin' должен работать. Редактирование файла для исправления ошибки в порядке, не так ли? – cremno