Как задать регулярное выражение для кириллических символов Юникода в Ruby 1.9 - PullRequest
7 голосов
/ 27 апреля 2010
#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 игнорировать символы кириллицы?

Я установил последний пакет ruby ​​из http://rubyinstaller.org/. Вот мой вывод ruby -v

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

Насколько я знаю, библиотека регулярных выражений oniguruma 1.9 полностью поддерживает символы Юникода.

1 Ответ

11 голосов
/ 27 апреля 2010

Это так, как указано в Ruby документации : \w эквивалентно [a-zA-Z0-9_] и, следовательно, не нацелено ни на один символ Unicode.

Возможно, вы вместо этого захотите использовать [[:alnum:]], который включает все буквенные и числовые символы Юникода. Проверьте также [[:word:]] и [[:alpha:]].

...