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

发布于 2024-10-24 22:19:06 字数 748 浏览 4 评论 0原文

我正在使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

月依秋水 2024-10-31 22:19:06

尝试使用

/\p{Mark}

我在一个旧的 Ruby 博客上读到,使用正斜杠将“尝试查找字符串中的编码形式的值”

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

Try using

/\p{Mark}

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文