3

我正在使用 oniguruma gem 在 ruby​​ 1.8 中获取支持 unicode 的正则表达式。根据语法文档,我应该能够使用\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 正则表达式指定有效的字符属性?

更新 - 如果我使用其中一种 UTF16 编码,则正则表达式会编译;但由于我的字符串是 UTF8 格式,这无济于事。所以我的问题变成了:如何使用UTF-8 Oniguruma 正则表达式指定有效的字符属性?

4

1 回答 1

0

尝试使用

/\p{Mark}

我在一个旧的 Ruby 博客上读到,使用正斜杠会“尝试在字符串中找到值作为编码

http://www.ruby-forum.com/topic/154384

于 2012-10-18T19:15:38.230 回答