#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字符。
答案 0 :(得分:11)
这是Ruby documentation中指定的:\w
相当于[a-zA-Z0-9_]
,因此不会定位任何unicode字符。
您可能希望使用[[:alnum:]]
代替,其中包括所有unicode字母和数字字符。另请检查[[:word:]]
和[[:alpha:]]
。