2010-04-27 10 views
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 neden kirpik karakterleri yoksaymanın sorusudur?Ruby'de unicode cinsi karakterler için Regexp nasıl belirtilir? 1.9

En son yakut paketini http://rubyinstaller.org/'dan yükledim. Normal ifade kütüphanesi unicode karakterleri tam destek var oniguruma i 1.9 bildiği gibi İşte Bildiğim kadarıyla ruby -v

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

benim çıkışıdır.

+0

(ruby 1.9) gsub tüm karakterleri kaldır - irb (main): 006: 0> str2.gsub (/ \ w/u, '') => "" – andrykonchin

+0

@aaz: bu olmamalı cevabım); Muhtemelen eski bir versiyonun var mı? –

+0

Bu soruyu "Ruby 1.9'da unicode karakterleri için Regexp nasıl belirlenir" diye adlandırırdım, çünkü bu win32 ile ne de (yalnızca) cyrillic ile ilgili değildir. –

cevap

10

Bu, Ruby documentation: \w'da belirtildiği gibi [a-zA-Z0-9_] ile eşdeğerdir ve bu nedenle herhangi bir unicode karakterini hedeflemez.

Bunun yerine, tüm unicode alfabetik ve sayısal karakterleri içeren [[:alnum:]] kullanmak istiyorsunuz. Ayrıca [[:word:]] ve [[:alpha:]]'a da bakın.

Linux üzerinde
+0

BTW, bu dökümanları yazmak için Run Run Run Run Run teşekkür edebiliriz. –