gpt4 book ai didi

ruby -/\p{Alpha}/i 和/\p{L}/i 在 ruby​​ 中有什么区别?

转载 作者:数据小太阳 更新时间:2023-10-29 06:58:31 27 4
gpt4 key购买 nike

我正在尝试在 ruby​​ 中构建一个正则表达式来匹配 UTF-8 中的字母字符,例如 ñíóúü 等。我知道 /\p{Alpha}/i有效,/\p{L}/i 也有效,但有什么区别?

最佳答案

它们似乎是等价的。 (编辑:有时,请参阅此答案的结尾)

Ruby 似乎从 1.9 版本开始支持 \p{Alpha}。在 POSIX 中,\p{Alpha} 等于 \p{L&}(对于支持 Unicode 的正则表达式;see here)。这匹配所有具有大写和小写变体的字符 ( see here )。 Unicase 字母不会被匹配(而它们会被 \p{L} 匹配。

对于 Ruby 来说这似乎不是真的(我随机选择了一个阿拉伯字符,因为阿拉伯字符是单写字母):

这似乎很好地表明 \p{Alpha} 只是 Ruby 中 \p{L} 的别名。在 Rubular 上,您还可以看到 \p{Alpha} 在 Ruby 1.8.7 中不可用。

请注意,i 修饰符在任何情况下都是不相关的,因为 \p{Alpha}\p{L} 都匹配大写和小写字符。

编辑:

哈,有区别!我刚找到 this PDF关于 Ruby 的新正则表达式引擎(如上所述从 Ruby 1.9 开始使用)。无论编码如何,\p{Alpha} 都可用(如果不支持 Unicode,则可能只匹配 [A-Za-z]),而 \p{L} 特别是一个 Unicode 属性。这意味着,\p{Alpha} 的行为与在 POSIX 正则表达式中完全一样,区别在于这里对应于 \p{L},但在 POSIX 中它对应于 \p{L&}.

关于ruby -/\p{Alpha}/i 和/\p{L}/i 在 ruby​​ 中有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13517100/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com