如何在Ruby 1.9中为unicode西里尔字符指定Regexp

use*_*922 7 ruby regex unicode encoding character-properties

#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
Run Code Online (Sandbox Code Playgroud)

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

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

ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-mingw32]
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*une 11

这是在Ruby文档中指定的:\w相当于[a-zA-Z0-9_]并且因此不针对任何unicode字符.

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