Как указать допустимое свойство символа с помощью регулярных выражений Онигурума? - PullRequest
3 голосов
/ 21 марта 2011

Я использую самоцвет oniguruma для получения регулярных выражений с поддержкой юникода в ruby ​​1.8.В соответствии с синтаксической документацией я должен иметь возможность использовать \p{M} или \p{Mark} для сопоставления кодовых точек со свойством Mark.

Однако, когда я делаю следующее

ORegexp.new '\p{M}',
            :options => OPTION_MULTILINE | OPTION_SINGLELINE | OPTION_IGNORECASE | OPTION_EXTEND,
            :syntax => SYNTAX_JAVA, # so we can use character properties
            :encoding => ENCODING_UTF8

Я получаю ArgumentError: Oniguruma Error: invalid character property name {M}.Я получаю ту же ошибку, если использую {Mark} или если использую один из других синтаксисов, поддерживающих \p.

Что я делаю не так?Как указать допустимое свойство символа с помощью регулярных выражений Oniguruma?

UPDATE - Если я использую одну из кодировок UTF16, регулярное выражение компилируется;но так как мои строки в UTF8, это не помогает.Поэтому у меня возникает вопрос: как указать допустимое свойство символа с помощью UTF-8 регулярных выражений Онигурума?

1 Ответ

0 голосов
/ 18 октября 2012

Попробуйте использовать

/\p{Mark}

Я читал в старом блоге Ruby, что использование косой черты "попытается найти значение в качестве кодировки в строке "

http://www.ruby -forum.com / тема / 154384

...