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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QRegExp, текст между тегами  (Прочитано 5309 раз)
0xFF
Гость
« : Март 29, 2010, 17:45 »

Немогу понять в чем проблема:

Переменная text типа QString содержит html-страничку, нужно вывести в QTextEdit текст между тегами <b> и </b>, по идее код должен быть таким:
Код
C++ (Qt)
QRegExp rx("<b>(.*?)</b>");
int pos(0);
 
while ((pos = rx.indexIn(text, pos)) != -1) {
textEdit->append( rx.cap(1) );
pos += rx.matchedLength();
}
Но ничего не выводится, хотя такая-же регулярка в программе RegexBuddy выдает правильный результат.
Попробывал заменить QRegExp rx("<b>(.*?)</b>") на QRegExp rx("<b>(.*)</b>"), в итоге выводится текст между первым и последним тегами(<b>,</b>) на странице.
Что не так?
Записан
alexman
Гость
« Ответ #1 : Март 29, 2010, 18:06 »

А простой парсинг с помощью QDomDocument не подойдет?
Записан
SimpleSunny
Гость
« Ответ #2 : Март 29, 2010, 19:01 »

По умолчанию идет поиск максимальной подстроки.
К тому же что это за конструкция ".*?", может имелось в виду ".+".

Код
C++ (Qt)
QRegExp rx("<b>(.+)</b>");
rx.setMinimal(true);
int pos(0);
 
while ((pos = rx.indexIn(text, pos)) != -1) {
textEdit->append( rx.cap(1) );
pos += rx.matchedLength();
}
Записан
0xFF
Гость
« Ответ #3 : Март 29, 2010, 19:17 »

QDomDocument, что-то многие пишут что он не все html принимает в силу того, что не для этого он собственно сделан. Завтра попробую с ним разобраться, но что-то он страшный изнутри)

Цитировать
rx.setMinimal(true);
Спасибо, работает)
Цитировать
К тому же что это за конструкция ".*?"
В вики это назвали ленивая квантификация) Незнаю, но в RegexBuddy только она и работала.
Записан
alexman
Гость
« Ответ #4 : Март 29, 2010, 20:54 »

QDomDocument, что-то многие пишут что он не все html принимает в силу того, что не для этого он собственно сделан. Завтра попробую с ним разобраться, но что-то он страшный изнутри)
QDomDocument создан для работы с xml, а html - частный случай xml. Можите привести пример, когда QDomDocument не применим для работы с html?
« Последнее редактирование: Март 29, 2010, 20:56 от alexman » Записан
SimpleSunny
Гость
« Ответ #5 : Март 29, 2010, 21:20 »

Возможно когда на входе невалидный html? Улыбающийся
Записан
alexman
Гость
« Ответ #6 : Март 29, 2010, 21:21 »

Возможно когда на входе невалидный html? Улыбающийся
Невалидный html - это не html Подмигивающий
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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