7
#coding: utf-8
str2 = "asdfМикимаус"
p str2.encoding #<Encoding:UTF-8> 
p str2.scan /\p{Cyrillic}/ #found all cyrillic characters
str2.gsub!(/\w/u,'') #removes only latin characters
puts str2

问题是为什么\w忽略西里尔字符?

我已经从http://rubyinstaller.org/安装了最新的 ruby​​ 包。这是我的输出ruby -v

ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-mingw32]

据我所知 1.9 oniguruma 正则表达式库完全支持 unicode 字符。

4

1 回答 1

11

这正如Ruby 文档中所指定的那样:\w等同于[a-zA-Z0-9_]并且因此不针对任何 unicode 字符。

您可能想[[:alnum:]]改用它,它包括所有 unicode 字母和数字字符。还要检查[[:word:]][[:alpha:]]

于 2010-04-27T17:26:30.083 回答