# "nÃo".match(/(não)/i) # => nil 有办法解决吗? 编辑:在与 i 标志(忽略大小写)的正则表达式比较中-6ren">
gpt4 book ai didi

ruby - 有没有办法对波浪字符使用正则表达式匹配?

转载 作者:数据小太阳 更新时间:2023-10-29 08:25:12 26 4
gpt4 key购买 nike

看看这个:

"nAo".match(/(nao)/i) # => #<MatchData "nAo" 1:"nAo">

"nÃo".match(/(não)/i) # => nil

有办法解决吗?

编辑:在与 i 标志(忽略大小写)的正则表达式比较中,ruby 似乎不支持 unicode 字符...使用 MRI 1.8.7p249

最佳答案

不了解 Ruby,但大多数正则表达式引擎不理解非 ASCII 字符的大写/小写。你能做的最好的事情是:

/(n[ãÃ]o)/

理解大写/小写关系的问题在于它依赖于语言。 Unicode 只编码字符的形式,不编码含义。因此,根据语言的不同,unicode 中的大写字符可以有不同的小写字符。

SS为例。在英语中,小写字母是 ss,但在德语中,它可以是 ß。另一个例子是字母 I,它在英语中是小写的 i,但在土耳其语中它的小写是 ı(没有点)。这是因为土耳其语中的 i 是大写的 ©(带点)。

因此,大多数正则表达式实现简单地放弃并拒绝理解标准 ASCII 之外的字符的大写/小写关系。

关于ruby - 有没有办法对波浪字符使用正则表达式匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4356514/

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