Как указать Regexp для unicode символов кириллицы в Ruby 1.9

#coding: utf-8
str2 = "asdfМикимаус"
p str2.encoding # 
p str2.scan /\p{Cyrillic}/ #found all cyrillic characters
str2.gsub!(/\w/u,'') #removes only latin characters
puts str2

Вопрос состоит в том почему \w проигнорировать символы кириллицы?

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

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

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

7
задан tchrist 29 March 2012 в 19:04
поделиться

1 ответ

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

Вы, вероятно, захотите использовать вместо него [[: alnum:]] , который включает все буквенные и цифровые символы Unicode. Также проверьте [[: word:]] и [[: alpha:]] .

11
ответ дан 6 December 2019 в 23:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: