Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ruby, юникод, рег.выражения, русский язык, кажется не дружат 
:(
    Опции темы
navrocky
Дата 16.1.2009, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 21.2.2008
Где: Ростов-на-Дону

Репутация: нет
Всего: нет



Столкнулся с проблемой, что руби не понимает правильно русские буквы в регулярных выражениях. Тоесть не работает тэг \w, не работает режим (?i) с русскими буквами. 

Текст и исходники в UTF8, ruby-1.8.6 под линух. 

И вообще, с какой кодировкой текста лучше работать в руби?
PM MAIL   Вверх
kemiisto
Дата 16.1.2009, 17:13 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 1
Всего: 160



Цитата(navrocky @  16.1.2009,  14:55 Найти цитируемый пост)
Столкнулся с проблемой, что руби не понимает правильно русские буквы в регулярных выражениях.

 smile Чушь!

Цитата(navrocky @  16.1.2009,  14:55 Найти цитируемый пост)
не работает тэг \w

Ну, да, приехали. Даже по тому, что Вы называете это тэг,очевидно, что Ваш уровень знания ругулярных выражений оставляет желать лучшего. RTFM, не сочтите за грубость.

Добавлено @ 17:14
Цитата(navrocky @  16.1.2009,  14:55 Найти цитируемый пост)
И вообще, с какой кодировкой текста лучше работать в руби?

UTF-8. И не только в случае Ruby.

Это сообщение отредактировал(а) kemiisto - 16.1.2009, 17:15


--------------------
PM MAIL WWW GTalk Jabber   Вверх
navrocky
Дата 16.1.2009, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 21.2.2008
Где: Ростов-на-Дону

Репутация: нет
Всего: нет



Конечно спасибо за ответ  smile , но он мне не помог.

Цитата
Даже по тому, что Вы называете это тэг,очевидно, что Ваш уровень знания _ругулярных_ выражений...

Не будем придираться к словам. Привожу пример:

Код

rx_city = %r{(?i)((?:Г|П|РП|С|СТ-ЦА)\s+\w+)}
puts rx_city.match("ЛЯ-ЛЯ г Бобруйск ФА-ФА")


выдает: [nil]

Меняем на:
Код
rx_city = %r{(?i)((?:Г|П|РП|С|СТ-ЦА)\s+\w+)}
#puts rx_city.match("ЛЯ-ЛЯ г Бобруйск ФА-ФА")
puts rx_city.match("ЛЯ-ЛЯ Г Bobruysk ФА-ФА")


И результат: Г Bobruysk

ЧЯДТ?
PM MAIL   Вверх
kemiisto
Дата 16.1.2009, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 1
Всего: 160



navrocky, а Вы понимаете, что \w - это только любой символ на латинице или цифра. Ну не входят туда кириллические символы! И не забываем про $KCODE.

Код

$KCODE='UTF-8'
rx_city = %r{(?:Г|г|П|п|РП|рп|С|c|СТ-ЦА|ст-ца)\s+(\w+|[а-яА-Я]+)}
puts rx_city.match("ЛЯ-ЛЯ г Бобруйск ФА-ФА")
puts rx_city.match("ЛЯ-ЛЯ Г Bobruysk ФА-ФА")


А вот ignore case и правда не работает.  smile 
Цитата
Also please remember that the /i flag (case insensitive matching) does not work on Unicode strings.


Это сообщение отредактировал(а) kemiisto - 16.1.2009, 19:37


--------------------
PM MAIL WWW GTalk Jabber   Вверх
kemiisto
Дата 16.1.2009, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 1
Всего: 160



Цитата(navrocky @  16.1.2009,  16:24 Найти цитируемый пост)
ЧЯДТ?

Много чего, как видишь. smile 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Ruby: Общие вопросы"
source777
  • С чего начать? начинаем
  • Ссылки на полезные ресурсы смотрим тут
  • Обязательно следуйте правилам Vingrad.
  • Пожалуйста, прочитайте рекомендации по работе в форуме и навигации по Vingrad.
  • Для вставки кодов Ruby используйте тег: [code=ruby]код[/code]. Когда в будущем подсветка синтаксиса для Ruby будет реализована, весь исходных код преобразится.
  • Используйтe чекбокс "Транслит" (возле кнопок кодов), если у Вас нет русских шрифтов.
  • Помните, для каждого вопроса должна быть своя тема.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Ruby: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0847 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.