![]() |
|
|
![]()
|
|
| SABROG |
|
||||||||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Есть такой текст:
Пытаюсь его отпарсить таким макаром:
В ui.lineEdit->text() находится такая регулярка:
В качестве результата хочу видеть такое:
Ну никак не получается. Пробывал играться с QRegExp::setMinimal(true), тоже ноль эмоций. Максимум что удавалось получить:
В общем стою на асфальте в лыжи обутый... |
||||||||||
|
|||||||||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
||||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Не, из title="(.*)". QRegExp даже так ничего не находит: "<a(.*)</a>". А так "(.*)" находит.
Или вот так: "td class="(.*)"" - находит все что после первой кавычки. А если добавить открывающий тег: "<td class="(.*)"" - то уже ничего не находит. Это сообщение отредактировал(а) SABROG - 11.9.2008, 23:41 |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
В общем от того чего я бежал, к тому и пришел. Без цикла while никуда, если хотим найти все вхождения:
Это сообщение отредактировал(а) SABROG - 12.9.2008, 08:58 |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
SABROG, с точки зрения QRegExp я тебе сегодня не готов сказать решение, но, имея ооочень хороший опыт работы с PCRE, могу сказать, что если тебе нужен title, так и делай регулярку на него. Чем меньше рег, тем правильнее результат.
Тебе надо (по правилас PCRE) использовать регулярку: title=\"(.+?)\" |
|||
|
||||
| SABROG |
|
||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Я сегодня нашел очень неприятную особенность браузеров из-за которой ломал себе голову несколько часов, пытаясь понять, почему не работает регулярка. Например если смотреть исходники html странички в firefox, то мы можем увидеть такую картину:
Если же смотреть "сгенерированную версию" (позволяют плагины для firefox), то картина уже такая:
Называется найди 10 отличий. Т.е. используя метод toHtml() в QWebView мы получим именно сгенерированную версию... |
||||
|
|||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 1 Всего: 261 |
||||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Да я ее сделал уже. Возникла проблема совсем другого плана. Хочу парсить содержимое QWebView в бесконечном цикле в главном потоке. Javascript обновляет страницу и я периодически ее сканирую вызывая processEvents вместе со sleep. В общем, чтобы ничего не подвисало. И оказалось, что если редирект идет на страницу без яваскрипта, который бы ее обновлял, то QWebView не реагирует ни на какие нажатия на ссылки, контролы html странички. А если щелкнуть правой кнопкой мышки, чтобы появилось меню копирования ссылки или вывести messagebox в любом месте, то клик сделанный минуту назад обрабатывается. Т.е. processEvents как-то странно работает. |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |