2010-04-27 2 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 सिरिलिक वर्ण उपेक्षा में यूनिकोड सिरिलिक वर्ण के लिए Regexp निर्दिष्ट करने के लिए?कैसे रूबी 1,9

मैंने http://rubyinstaller.org/ से नवीनतम रूबी पैकेज स्थापित किया है। यहाँ जहां तक ​​मुझे पता है 1.9 oniguruma नियमित अभिव्यक्ति पुस्तकालय यूनिकोड वर्ण के लिए पूरा समर्थन है ruby -v

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

की मेरी उत्पादन होता है।

+0

लिनक्स पर (रूबी 1.9) gsub सभी पात्रों को हटाएं - irb (मुख्य): 006: 0> str2.gsub (/ \ w/u, '') => " – andrykonchin

+0

@aaz: इसे नहीं देखना चाहिए मेरा जवाब); शायद आपके पास पुराना संस्करण है? –

+0

मैं इस सवाल का नाम बदलूंगा "रूबी 1.9 में यूनिकोड वर्णों के लिए रेगेक्सपी को कैसे निर्दिष्ट करें", क्योंकि यह Win32 से संबंधित नहीं है और न ही केवल (केवल) सिरिलिक से संबंधित है। –

उत्तर

10

यह Ruby documentation: \w में निर्दिष्ट है [a-zA-Z0-9_] के बराबर है और इस प्रकार किसी भी यूनिकोड चरित्र को लक्षित नहीं करता है।

आप शायद [[:alnum:]] का उपयोग करना चाहते हैं, जिसमें सभी यूनिकोड वर्णमाला और संख्यात्मक वर्ण शामिल हैं। [[:word:]] और [[:alpha:]] भी देखें।

+0

बीटीडब्ल्यू, हम इस दस्तावेज़ को लिखने के लिए रन पेंट रन रन का शुक्रिया अदा कर सकते हैं। –