如何使用 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 正则表达式指定有效的字符属性?
更新 - 如果我使用其中一种 UTF16 编码,则正则表达式会编译;但由于我的字符串是 UTF8,这没有帮助。所以我的问题变成:如何使用 UTF-8 Oniguruma 正则表达式指定有效的字符属性?
I'm using the oniguruma gem to get unicode-aware regexes in ruby 1.8. According to the syntax documentation, I should be able to use \p{M}
or \p{Mark}
to match code points with the Mark property.
However, when I do the following
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
I get ArgumentError: Oniguruma Error: invalid character property name {M}
. I get the same error if I use {Mark}
, or if I use one of the other syntaxes that support \p
.
What am I doing wrong? How do I specify a valid character property using Oniguruma regexes?
UPDATE - If I use one of the UTF16 encodings, the regex compiles; but since my strings are in UTF8 that doesn't help. So my question becomes: how do I specify a valid character property using UTF-8 Oniguruma regexes?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
尝试使用
我在一个旧的 Ruby 博客上读到,使用正斜杠将“尝试查找字符串中的编码形式的值”
http://www.ruby-forum.com/topic/154384
Try using
I was reading on an old Ruby blog that using the forward slash would "try to find the value as encoding in the string"
http://www.ruby-forum.com/topic/154384