Previous Entry Share Next Entry
QRegExp
Шар
hegan_gray wrote in ru_qt
Комрады, есть проблема:
получаю новостные сообщения с сервера Reuters. Тело новости выдираю, но оно в каком-то html-образном виде. Я не могу назвать это чистым html, потому что тэг Origin, встречающийся там постоянно по тексту, не понимается ни одним браузером.
Хочу вырезать из новостного сообщения все тэги вида
<origin href="blah-blah-blah">blah-blah-blah</origin>

Помогите, пожалуйста, составить регулярное выражение, а то не получается никак.

x-post ru_qt4

  • 1
Господа, да вы чего это?
Qstring htmlBody = ... ;
QRegExp re("<origin.*</origin>", ,Qt::CaseInsensitive);
re.setMinimal(true);
htmlBody.replace(re, "");

А вот как xml-парсер обработает такое, я себе не представляю:
<html>
    <body>
        ...............<br>
        ....<a href=".....">.....</a>..............
        <p>
            ...............<br>
            ..............
        </p>
    </body>
</html>

Тут же есть незакрытые тэги, которые недопустимы с точки зрения xml, тут есть тэги, включённые в текст текст другого тэга. Вы можете себе представить, как это обработает, скажем, DOM-парсер? Я не могу...


Млин, так речь о qt идёт?.. Я про PHP почему-то думал...

Ну, собственно, в ru_qt о чём ещё речь может идти?
Сори за тупость ))

Бывает :)
Я тоже иногда не замечаю, в какой коммуне сообщение написано :)
А регулярки и правда d том же стиле, что и у PHP, насколько я понимаю. Ну да у Qt регулярки вообще четырёх типов бывают :)

Да, про сложности с html я и подзабыл.
Хотя, начиная с 4.6 через webkit можно получить доступ к DOM.
http://doc.qt.nokia.com/4.6/qwebelement.html

А про regexp чего-то не понял немного, что вам хочется. Ваше выражение вырезает теги <origin/>. Если хочется оставить внутренности, можно открывающий и закрывающий отдельно резать.

Нет, внутренности тоже оставлять не хотелось. Хотелось вырезать всё, включая внутренности.
Моё выражение режет именно то, что описано в посте, включая адрес ссылки и текст ссылки. Если хотите, проверьте сами.
А использовать вебкит для того, что делается регэкспом и методами QString, это как из пушки по воробьям. Тем более, что у меня пока что 4.5.3, руки не дошли до 4.6 обновиться.

  • 1
?

Log in

No account? Create an account