Название: Регулярное выражение Отправлено: vohulg от Май 31, 2014, 09:56 Доброго времени. Не получается вытащить строку по регулярному выражению, не вижу ошибки. Подскажите может кто увидит.
Есть текст который получаю в формате QByteArray Код: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> Из него мне надо вытащить данные содержащие json Код: {"success":true,"list":[{"name":"\u0422\u0435\u0441\u0442 \u0422\u0435\u0441\u0442\u043e\u0432","email":"testtestov101@mail.ru","text":"\u043e\u0432\u0430\u0442\u043e\u0432conv \u2014 \u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u0443\u044e \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0443","inbox":false,"date":"28 \u0410\u043f\u0440 15:19","mid":"211783149443618077"},{"name":"tttttttttt ytyt","email":"night_post@mail.ru","text":"\u041f\u043e\u043b\u0443\u0447\u0438 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430 \u0440\u0443\u0431\u0435\u0436\u043e\u043c \u0441 EF. \u0423\u043d\u0438\u0432\u0435\u0440\u0441\u0438\u0442\u0435\u0442\u044b \u0438 \u0448\u043a\u043e\u043b\u044b \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u043c\u0438\u0440\u0443","inbox":true,"date":"2012, 10 \u041e\u043a\u0442 09:25","mid":"211733104484681302"}],"is_last":true,"is_messages":false,"message_ts":0} }; Максимально приближенный к цели я смог достичь таким выражением: Код: QRegExp regexContactAgent("contacts: (.)+</script>"); По которому получаю Код: contacts: {"success":true,"list":[{"name":"\u0422\u0435\u0441\u0442 \u0422\u0435\u0441\u0442\u043e\u0432","email":"testtestov101@mail.ru","text":"\u043e\u0432\u0430\u0442\u043e\u0432conv \u2014 \u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u0443\u044e \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0443","inbox":false,"date":"28 \u0410\u043f\u0440 15:19","mid":"211783149443618077"},{"name":"tttttttttt ytyt","email":"night_post@mail.ru","text":"\u041f\u043e\u043b\u0443\u0447\u0438 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430 \u0440\u0443\u0431\u0435\u0436\u043e\u043c \u0441 EF. \u0423\u043d\u0438\u0432\u0435\u0440\u0441\u0438\u0442\u0435\u0442\u044b \u0438 \u0448\u043a\u043e\u043b\u044b \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u043c\u0438\u0440\u0443","inbox":true,"date":"2012, 10 \u041e\u043a\u0442 09:25","mid":"211733104484681302"}],"is_last":true,"is_messages":false,"message_ts":0} }; Может кто знает как отбросить лишние символы вначале и в конце полученного текста ? Еще я не понимаю почему не работает вот такое выражение: Код: QRegExp regexContactAgent("contacts: (.)+};); Вроде все логично, но у меня это выражение не срабатывает Название: Re: Регулярное выражение Отправлено: m_ax от Май 31, 2014, 10:05 Попробуйте задать:
Код
Название: Re: Регулярное выражение Отправлено: kambala от Май 31, 2014, 13:03 к последнему: попробуй экранировать фигурную скобку \\}. и непонятно зачем скобки вокруг точки — тебе надо «захватить» фигурную скобку что ли?
Название: Re: Регулярное выражение Отправлено: kambala от Май 31, 2014, 22:46 Hrundel, ты написал какую-то ахинею. если не разбираешься и решил быстренько по табличке пройтись и ответить че-то, то не стоило.
Название: Re: Регулярное выражение Отправлено: m_ax от Май 31, 2014, 23:14 Судя по его записи (.)+ означает, что он собирается прочесть как минимум одну точку типа String или char или серию точек "................." Видимо в Баварском техническом университете на на факультете общей информатики забили на образование) Название: Re: Регулярное выражение Отправлено: Hrundel от Июнь 01, 2014, 05:08 Hrundel, ты написал какую-то ахинею. если не разбираешься и решил быстренько по табличке пройтись и ответить че-то, то не стоило. Да, действительно, какая мне собственно разница?! Название: Re: Регулярное выражение Отправлено: Bepec от Июнь 01, 2014, 07:17 offtop: Печаль тоска.
По теме: выбрасывай нафиг QRegExp, бери deelx.h файлик и суй туда Код: (?<=contacts:) .*?(?=</script>) Получишь Код: {"success":true,"list":[{"name":"\u0422\u0435\u0441\u0442 \u0422\u0435\u0441\u0442\u043e\u0432","email":"testtestov101@mail.ru","text":"\u043e\u0432\u0430\u0442\u043e\u0432conv \u2014 \u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u0443\u044e \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0443","inbox":false,"date":"28 \u0410\u043f\u0440 15:19","mid":"211783149443618077"},{"name":"tttttttttt ytyt","email":"night_post@mail.ru","text":"\u041f\u043e\u043b\u0443\u0447\u0438 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430 \u0440\u0443\u0431\u0435\u0436\u043e\u043c \u0441 EF. \u0423\u043d\u0438\u0432\u0435\u0440\u0441\u0438\u0442\u0435\u0442\u044b \u0438 \u0448\u043a\u043e\u043b\u044b \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u043c\u0438\u0440\u0443","inbox":true,"date":"2012, 10 \u041e\u043a\u0442 09:25","mid":"211733104484681302"}],"is_last":true,"is_messages":false,"message_ts":0} }; PS deelx.h - это полноценный regExp в одном h файле, искать в гугле :D PPS сразу чтоб не плутал - Код: QString regExps(QString inString, QString inRegExp) Название: Re: Регулярное выражение Отправлено: VPS от Июнь 01, 2014, 11:45 Вот такое выражение должно работать:
Код: QRegExp reg("contacts:\\s?(\\{.+\\})\\s*\\}"); Название: Re: Регулярное выражение Отправлено: Bepec от Июнь 01, 2014, 14:00 Да, так тоже работает, выдаст
Код: contacts: {"success":true,"list":[{"name":"\u0422\u0435\u0441\u0442 \u0422\u0435\u0441\u0442\u043e\u0432","email":"testtestov101@mail.ru","text":"\u043e\u0432\u0430\u0442\u043e\u0432conv \u2014 \u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u0443\u044e \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0443","inbox":false,"date":"28 \u0410\u043f\u0440 15:19","mid":"211783149443618077"},{"name":"tttttttttt ytyt","email":"night_post@mail.ru","text":"\u041f\u043e\u043b\u0443\u0447\u0438 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430 \u0440\u0443\u0431\u0435\u0436\u043e\u043c \u0441 EF. \u0423\u043d\u0438\u0432\u0435\u0440\u0441\u0438\u0442\u0435\u0442\u044b \u0438 \u0448\u043a\u043e\u043b\u044b \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u043c\u0438\u0440\u0443","inbox":true,"date":"2012, 10 \u041e\u043a\u0442 09:25","mid":"211733104484681302"}],"is_last":true,"is_messages":false,"message_ts":0} } |