2010-08-26 16 views
9

Ben yakut 1.9 kullanarak ve dışarı ben bu doğru yapmak gerekir regex hangi bulmaya çalışıyorum:Unicode sözcükleri ruby ​​1.9 ile nasıl eşleştirilir?

Encoding.default_internal = Encoding.default_external = 'utf-8' 
"föö".match(/(\w+)/u)[1] == "föö" 
# => false 
+0

Her iki dizeyi de eşleştirebileceğinizle aynı unicode dönüştürmeniz gerekir. Iconv ile dizginizi belirli unicode'a dönüştürebilirsiniz. –

+0

Varsayılan Kodlama eklendi. Hala çalışmıyor ... – Reactormonk

+0

"Script utf-8" kodunun başında "# kodlama utf-8" yazınız ve emin olun ki bu script dosyası utf-8'dir. – Nakilon

cevap

36
# encoding=utf-8 
p "föö".match(/\p{Word}+/)[0] == "föö" 
+2

oh, seni seviyorum! – Hock

+1

Regexp'in doğru kodlamayla doğru şekilde davranmasını sağlamak için kaynak kodu UTF8 olarak etiketlemeniz gerektiği için çılgınsınız. Çok teşekkürler ! – demental

+2

Bunun için iyi bir dokümantasyon şu adreste bulunabilir: http://www.ruby-doc.org/core-1.9.3/Regexp.html#label-Character+Properties –

0

yapabilirsiniz manually turn on Unicode matching:

"föö".match(/(?u)(\w+)/)[1] == "föö" 
# => true 

Ancak Unicode özellik Syntax'i kullanarak (ikisi de Unicode kod noktalarına otomatik olarak saygı duyduklarından, steenslag'ın cevabı) veya POSIX Parantezleri Sözdizimi daha iyi bir stildir:Ruby regexes'teki Unicode karakterleri eşleme hakkında daha fazla bilgi için bkz. Bkz. Bkz. ..

İlgili konular