如何在Ruby 1.9中为unicode西里尔字符指定正则表达式

时间:2010-04-27 14:06:18

标签: 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

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

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

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

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

1 个答案:

答案 0 :(得分:11)

这是Ruby documentation中指定的:\w相当于[a-zA-Z0-9_],因此不会定位任何unicode字符。

您可能希望使用[[:alnum:]]代替,其中包括所有unicode字母和数字字符。另请检查[[:word:]][[:alpha:]]