crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> не работает QRegexExp
eldar85
  опции профиля:
сообщение 17.5.2010, 0:47
Сообщение #1


программист
***

Группа: Участник
Сообщений: 283
Регистрация: 2.1.2010
Из: Москва
Пользователь №: 1348

Спасибо сказали: 0 раз(а)




Репутация:   0  


ничего не пойму, вроде все правильно, функция всегда все находила, а тут ни в какую не хочет...
вот код:
void mainWindow::regex(QString str, QString xStr)
{
    QRegExp rx(str);
    QString prim;


             int pos = 0;

             while ((pos = rx.indexIn(xStr, pos)) != -1)
             {

                 prim = rx.cap(1);

                 pos += rx.matchedLength();
             }

    qDebug() << prim;
}


ну и вот применение:
QString fignya = "fijgeiowjgoiewj jiojgeijbio iogjeiojgieojgb igjibj jiogjirbjior jiodgjibj hash('69d58f4cd6f3bb9ddaee66e06'), dfkjgekd kdgjkedjg";
regex("hash('([a-z0-9]*)", fignya);

и нифига не находит...
и вот так пробывал:
regex("hash\('([a-z0-9]*)", fignya);

тоже все мимо... что же не так???
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
eldar85
  опции профиля:
сообщение 17.5.2010, 1:46
Сообщение #2


программист
***

Группа: Участник
Сообщений: 283
Регистрация: 2.1.2010
Из: Москва
Пользователь №: 1348

Спасибо сказали: 0 раз(а)




Репутация:   0  


вот так вот работает, но там получается два ненужных символа...
regex("hash([('0-9a-zA-Z]*)", fignya);

и на выходе:
('69d58f4cd6f3bb9ddaee66e06
блин ну если уж на то пошло то как удалить можно из строки два первых символа??? хотя конечно это как то коряво будет вообще...

я так понимаю что проблема главная в этой скобке... что с ней сделать то чтобы он ее как нужно воспринемал???
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 17.5.2010, 8:40
Сообщение #3


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


Цитата(eldar85 @ 17.5.2010, 1:47) *
тоже все мимо... что же не так???

может
Цитата
Note: The C++ compiler transforms backslashes in strings. To include a \ in a regexp, enter it twice, i.e. \\. To match the backslash character itself, enter it four times, i.e. \\\\.

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
eldar85
  опции профиля:
сообщение 17.5.2010, 8:49
Сообщение #4


программист
***

Группа: Участник
Сообщений: 283
Регистрация: 2.1.2010
Из: Москва
Пользователь №: 1348

Спасибо сказали: 0 раз(а)




Репутация:   0  


блин, я же английский вообще мало знаю, куском понял)))
я правильно понял "нужно вместо одного два символа \\ поставить"????
сейчас попробую...

даааааааааааааа)))))))) работает!!!!!!!!!!!!!!!!!)))))))))) огромное спасибо!!!!!!!!!!!!!)))))))))
regex("hash\\('([0-9a-zA-Z]*)", fignya);

а я читал про регулярки вчера, там пишут что один обратный слышь в строке перед скобкой нужен, но то что два вообще первый раз слышу)))) спасибо!!!!)))
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 21.12.2024, 15:32