#ruby #regex
#ruby #регулярное выражение
Вопрос:
Как я могу заставить это регулярное выражение работать в ruby 1.8.7?
regexp = /[^ёЁа-яА-Яa-zA-Zà-üÀ-Ü0-9.- _]/
Оно должно работать следующим образом
"⟲«Du côté des chars lourds»_123.doc".gsub(regexp, "_"): "__Du_côté_des_chars_lourds__123.doc"
В ruby 1.9.2 это работает, но не в ruby 1.8.7.
Комментарии:
1. Потому что это в драгоценном камне, который также должен быть доступен пользователям ruby 1.8.7. 🙂
2. Кажется, работает над Rubular, который также использует 1.8.7: rubular.com/r/SnEByiEjQv
3. Может ли это быть проблемой с кодировкой исходного файла ruby?
4. Это действительно странно. Я только что попробовал это снова, используя ree-1.8.7-2011.03 и irb, и это не работает. Может ли кто-нибудь еще попробовать использовать ree и irb?
Ответ №1:
Добавьте u
(Unicode) модификатор к вашему регулярному выражению:
regexp = /[^ёЁа-яА-Яa-zA-Zà-üÀ-Ü0-9.- _]/u
Комментарии:
1. Спасибо, это работает! Вы знаете, как я могу передать эту опцию, используя Regexp.new? Regexp.new(‘…’, ‘u’), похоже, не работает.
2. @gucki, модификаторы кодировки символов входят в третий аргумент. Попробуйте:
Regexp.new("...", nil, "u")
.