Regex \w
не соответствует символам utf-8 в Ruby 1.9.2. Кто-нибудь сталкивался с такой же проблемой?Regex " w" не обрабатывает символы utf-8 в Ruby 1.9.2
Пример:
/[\w\s]+/u
В моих рельсам application.rb Я добавил config.encoding = "utf-8"
Regex \w
не соответствует символам utf-8 в Ruby 1.9.2. Кто-нибудь сталкивался с такой же проблемой?Regex " w" не обрабатывает символы utf-8 в Ruby 1.9.2
Пример:
/[\w\s]+/u
В моих рельсам application.rb Я добавил config.encoding = "utf-8"
Определение "не соответствует UTF-8 символов"? Если вы ожидаете, что \w
будет соответствовать любым другим словам, отличным от букв ASCII в верхнем и нижнем регистре, цифр ASCII и подчеркивания, это не будет - Ruby определил \w
эквивалентом [A-Za-z0-9_]
независимо от Unicode. Может быть, вы хотите \p{Word}
или что-то подобное вместо этого.
Ref: Ruby 1.9 Regexp documentation (см. Раздел «Классы символов»).
Вы всегда можете использовать что-то вроде
[a-zA-Z0-9_ñáéíóú]
вместо \w
Это работает в .NET. Похоже, что это ошибка реализации регулярного выражения ruby. –
+1 Ruby определил '\ w' эквивалентно' [A-Za-z0-9_] 'независимо от Unicode. Это так очевидно, поэтому я тоже не заметил :) – kfl62
Как заявляет автоответчик, '\ p {Word}' выполняет эту работу, но это только Ruby 1.9. Может быть стоит проверить, Regexp.instance_methods.include? (: Encoding), чтобы выяснить, какой шаблон вы хотите использовать. – pat