Russian Qt Forum
Декабрь 18, 2024, 04:53 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Аналог preg-match-all  (Прочитано 4462 раз)
thechicho
Гость
« : Сентябрь 30, 2011, 16:59 »

Подскажите как на Qt реализуется аналог php функции <a href="http://php.net/manual/ru/function.preg-match-all.php">preg_match_all();</a>

ща пока такой код:

Код:
QRegExp rx("((?:.+)=(?:.+);)");
rx.setMinimal(true);
rx.indexIn(data);
QString newdata = rx.cap(1);

а мне нужны все вхождения rx в одной строке.
т.е. как-то надо в массив спарсить все вхождения (QStringList наверн), а потом соединить массив в строку.
хелп, как это сделать.
Записан
thechicho
Гость
« Ответ #1 : Сентябрь 30, 2011, 17:27 »

Код:
QRegExp rx("([^\\s]+=(?:.+);)");
    rx.setMinimal(true);
    QString newdata;
    int pos = 0;

    while ((pos = rx.indexIn(data, pos)) != -1) {
        newdata += rx.cap(1) + " ";
        pos += rx.matchedLength();
    }

    return newdata.trimmed();

попроще можно как-то было сделать?
Записан
thechicho
Гость
« Ответ #2 : Сентябрь 30, 2011, 17:30 »

QRegExp rx("([^\\s]+=.+;)");

подшаблон тут совсем необязателен.
в общем получил я таким образом строку с куками (кука1=значение; кука2=значение; кука3=значение;).

ща мне надо отправить запрос с ней.
как?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #3 : Октябрь 01, 2011, 23:27 »

>>ща мне надо отправить запрос с ней.
>>как?

Здесь тема "Аналог preg-match-all", причём здесь запрос?
Записан

Юра.
thechicho
Гость
« Ответ #4 : Октябрь 04, 2011, 15:37 »

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

Код
C++ (Qt)
QByteArray cookieFromHeaders = reply->rawHeader("Set-Cookie");
writeOnFile(fileCookies, cookieFromHeaders);
QByteArray cookiesRead = readOnFile(fileCookies);
 
QNetworkRequest request;
request.setRawHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; rv:7.0.1) Gecko/20100101 Firefox/7.0.1");
request.setRawHeader("Cookie", cookiesRead);
request.setUrl(QUrl(url));
 
QString PostParams = "_stateParam=eCareLocale.currentLocale%3Dru_RU__Russian&_forwardName=null&_resetBreadCrumbs=false&_expandStatus=&userName=" + loginReq + "&password=" + password + "&ecareAction=login";
QByteArray PostData = PostParams.toUtf8();
qnam->post(request, PostData);
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Октябрь 04, 2011, 15:56 »

ну, просто я сам нашел решение этой проблемы. сразу возникла следующая, вот и спросил тут. типа "живой форум", как один чувак тут грил)
с запросом тоже разобрался.
Ну наверно тот чувак был прав  Улыбающийся

То что Вы энергично решаете свои проблемы - это, конечно, только хорошо. Но все имеет свои плюсы и минусы. Что будете делать если проблема оказалась совсем не простой, и просто "энергичностью" и чтением хелпа ее не решить? Никак не пытаюсь подколоть, просто интересен ход мЫшления  Улыбающийся
Записан
thechicho
Гость
« Ответ #6 : Ноябрь 27, 2011, 18:42 »

while (fail) {
гугл
гугл, доки
гугл, форум
гугл, гугл, гугл
sleep(n);
}
нет нерешаемых проблем. все упирается в время на поиск решения. форум сокращает это время. вот и все.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.134 секунд. Запросов: 23.