2010-10-20 4 views

ответ

8

Определение "не соответствует UTF-8 символов"? Если вы ожидаете, что \w будет соответствовать любым другим словам, отличным от букв ASCII в верхнем и нижнем регистре, цифр ASCII и подчеркивания, это не будет - Ruby определил \w эквивалентом [A-Za-z0-9_] независимо от Unicode. Может быть, вы хотите \p{Word} или что-то подобное вместо этого.

Ref: Ruby 1.9 Regexp documentation (см. Раздел «Классы символов»).

+0

Это работает в .NET. Похоже, что это ошибка реализации регулярного выражения ruby. –

+0

+1 Ruby определил '\ w' эквивалентно' [A-Za-z0-9_] 'независимо от Unicode. Это так очевидно, поэтому я тоже не заметил :) – kfl62

+1

Как заявляет автоответчик, '\ p {Word}' выполняет эту работу, но это только Ruby 1.9. Может быть стоит проверить, Regexp.instance_methods.include? (: Encoding), чтобы выяснить, какой шаблон вы хотите использовать. – pat

1

Вы всегда можете использовать что-то вроде

[a-zA-Z0-9_ñáéíóú] 

вместо \w