Поиск:

Ответ в темуСоздание новой темы Создание опроса
> RegExp для поиска русских букв, помогите написать регулярное выражение 
V
    Опции темы
multik
Дата 9.7.2009, 02:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Никак не могу подружится с регулярными выражениями. 
Необходимо в тексте искать русские буквы.
Вот такое выражение не работает QRegExp rx("[\\x0000 - \\xFFFF]");

Помогите пожалуйста))))
PM MAIL   Вверх
korbian
Дата 9.7.2009, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 336
Регистрация: 20.2.2007
Где: Penza

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



multik, приведите минимальный компилируемый пример, иллюстрирующий проблему.


--------------------
korbian ©
PM   Вверх
multik
Дата 9.7.2009, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



При компиляции ошибок нет, просто там где есть русские буквы он их не находит.
вот пример текста в котором я ищу, т.е. это словарь :

Aharonov-Bohm effect=эффект Ааронова-Бома
Anderson localization=андерсоновская локализация
Anderson transition=переход Андерсона
Arrhenius-type temperature dependence=температурная зависимость аррениусовского типа
Auger electron specroscopy=Оже-электронная спектроскопия
Auger recombination=Оже рекомбинация
...
Код

QRegExp regExp2("[\\x0000-\\xFFFF"]);     //задала диапазон как написано в assistant "(between 0x0000 and 0xFFFF)."
pos = strHtml.indexOf(regExp2);           //в строке srtHtml находится весь текст(см. выше).
....            

 
НО он так ничего и не находит и возвращает -1, что не так я не знаю, наверно пишу просто неправильно это выражение

если в регулярном выражении указать какой то конкретный символ, например:

Код

QRegExp regExp2("\\x0410");
pos = strHtml.indexOf(regExp2);           //в строке srtHtml находится весь текст(см. выше).
....

            
то все находит.
PM MAIL   Вверх
korbian
Дата 9.7.2009, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 336
Регистрация: 20.2.2007
Где: Penza

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



multik, у тебя строчки скорее всего не в юникоде. 
вот так вот работает:
Код

#include <QtCore/QCoreApplication>
#include <QtDebug>
#include <Qt/QRegExp.h>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    // определяем Юникод строку с кириллицей
    QChar unicode[] = {QChar(0x041F), // П
                        QChar(0x0440), // р
                        QChar(0x0438), // и
                        QChar(0x0432), // в
                        QChar(0x0435), // е
                        QChar(0x0442)}; // т
    QString cyrilicStr(unicode, 6);
    // ищем первое вхождение любой литеры кириллицы
    int pos = cyrilicStr.indexOf(QRegExp("[\\x0400-\\x045f]"), 0);
    qDebug()<<pos;
    // ищем первое вхождение литеры 'т'
    pos = cyrilicStr.indexOf(QRegExp("\\x0442"), 0);
    qDebug()<<pos;
    return a.exec();
}


p.s. моя первая программа на qt


--------------------
korbian ©
PM   Вверх
multik
Дата 10.7.2009, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо korbian проблема действительно была в кодировке самих строк.

Поздравляю с первой программой на Qt  smile 

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

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

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




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


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

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