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