如何使用Oniguruma正则表达式指定有效的字符属性?

时间:2011-03-21 10:26:33

标签: ruby regex oniguruma

我正在使用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 regexes指定有效的字符属性?

更新 - 如果我使用UTF16编码之一,正则表达式编译;但由于我的字符串是UTF8,但没有帮助。所以我的问题变成:如何使用 UTF-8 Oniguruma正则表达式指定有效的字符属性?

1 个答案:

答案 0 :(得分:0)

尝试使用

/\p{Mark}

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

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