Luc*_*rim 2 ruby regex unicode case-insensitive
看这个:
"nAo".match(/(nao)/i) # => #<MatchData "nAo" 1:"nAo">
"nÃo".match(/(não)/i) # => nil
Run Code Online (Sandbox Code Playgroud)
有没有办法解决这个问题?
编辑:似乎ruby在i标志的regexp比较中缺乏对unicode字符的支持(忽略大小写)...使用MRI 1.8.7p249
不了解Ruby,但大多数正则表达式引擎不理解非ASCII字符的大写/小写.你能做的最好的事情是:
/(n[ãÃ]o)/
Run Code Online (Sandbox Code Playgroud)
理解大写/小写关系的问题在于它依赖于语言.Unicode只编码字符的形式,而不是意义.因此,unicode中的大写字符可以根据语言具有不同的小写字符.
举个例子SS.在英语中,小写将是,ss但在德语中它可以ß.另一个例子是I英文中的小写字母,i但土耳其语中的小写字母是?(没有点).那是因为i在土耳其语中有大写字母?(带点).
因此,大多数正则表达式实现只是放弃并拒绝理解标准ASCII之外的字符的大写/小写关系.