QT и регулярные выражения, отображения html в QTextEdit при помощи регулярных выражений |
Здравствуйте, гость ( Вход | Регистрация )
QT и регулярные выражения, отображения html в QTextEdit при помощи регулярных выражений |
bynet |
19.5.2008, 16:26
Сообщение
#1
|
Студент Группа: Участник Сообщений: 69 Регистрация: 17.3.2008 Из: Belarus Пользователь №: 124 Спасибо сказали: 0 раз(а) Репутация: 0 |
Есть програмка. Она открывает html файл и отображает его код. Надо при помощи регулярных выражений сделать чтобы отображался не html код а страничка. Обязательно это надо сделать при помощи регулярных выражениях.
Как сюда прикрутить регулярные выражения и вообще как их использовать? CODE #include <QtGui>
#include "mainwindow.h" MainWindow::MainWindow(QWidget *parent):QMainWindow(parent) { textEdit = new QTextEdit; setCentralWidget(textEdit); createActions(); createMenus(); } void MainWindow::createMenus() { menu = menuBar()->addMenu(tr("&File")); menu->addAction(openAct); } void MainWindow::createActions() { openAct = new QAction(tr("&Open..."), this); openAct->setShortcut(tr("Ctrl+O")); openAct->setStatusTip(tr("Open an existing file")); connect(openAct, SIGNAL(triggered()), this, SLOT(open())); } void MainWindow::open() { QString fileName = QFileDialog::getOpenFileName(this); if (!fileName.isEmpty()) loadFile(fileName); } void MainWindow::loadFile(const QString &fileName) { QFile file(fileName); if (!file.open(QFile::ReadOnly | QFile::Text)) { QMessageBox::warning(this, tr("Application"), tr("Cannot read file %1:\n%2.") .arg(fileName) .arg(file.errorString())); return; } QTextStream in(&file); QApplication::setOverrideCursor(Qt::WaitCursor); textEdit->setPlainText(in.readAll()); QApplication::restoreOverrideCursor(); } Сообщение отредактировал bynet - 19.5.2008, 16:34 |
|
|
LuckLess |
19.5.2008, 18:13
Сообщение
#2
|
Студент Группа: Новичок Сообщений: 31 Регистрация: 10.10.2007 Пользователь №: 8 Спасибо сказали: 0 раз(а) Репутация: 0 |
я правильно понимаю? Нужно сделать полноценный парсер HTML при помощи регулярных выражений ?
|
|
|
ViGOur |
19.5.2008, 19:44
Сообщение
#3
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
QTextEdit вроде как и без регулярных выражений умеет правильно отображать html странички, а не только код.
А обязательно регулярные выражения или как? |
|
|
Litkevich Yuriy |
20.5.2008, 7:44
Сообщение
#4
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
видимо это задание такое, освоить регулярные выражения.
|
|
|
bynet |
20.5.2008, 10:04
Сообщение
#5
|
Студент Группа: Участник Сообщений: 69 Регистрация: 17.3.2008 Из: Belarus Пользователь №: 124 Спасибо сказали: 0 раз(а) Репутация: 0 |
нужно освоить регулярные выражения, это в универе задание. Я понимаю что QTextEdit сам может это всё сделать, но нужно имеено рег.выражения использовать. Помогите пожалуйста.
Сообщение отредактировал bynet - 20.5.2008, 10:05 |
|
|
Litkevich Yuriy |
20.5.2008, 10:16
Сообщение
#6
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
ну начни подбирать регулярные выражения, которые будут удалять теги, чтобы только текст остался.
Для этих экспериментов можно пользоваться разными программами: * %QTDIR%\examples\tools\regexp * RegExp Planner --- И ведь ты уже создавал тему "Регулярные выражения QT, отображение HTML", в ней бы и продолжал |
|
|
bynet |
20.5.2008, 11:00
Сообщение
#7
|
Студент Группа: Участник Сообщений: 69 Регистрация: 17.3.2008 Из: Belarus Пользователь №: 124 Спасибо сказали: 0 раз(а) Репутация: 0 |
ну начни подбирать регулярные выражения, которые будут удалять теги, чтобы только текст остался. Для этих экспериментов можно пользоваться разными программами: * %QTDIR%\examples\tools\regexp * RegExp Planner --- И ведь ты уже создавал тему "Регулярные выражения QT, отображение HTML", в ней бы и продолжал А как мне с сылками быть? |
|
|
Litkevich Yuriy |
20.5.2008, 11:20
Сообщение
#8
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
ну я думаю до ссылок доберешся в свое время, начни с простого.
|
|
|
Tonal |
20.5.2008, 12:10
Сообщение
#9
|
Активный участник Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: 17 |
Вообще-то задание довольно уродское: принципиальное ограничение регулярных языков - это неумение работать со структурами произвольной вложенности. Грубо говоря, нельзя написать регулярное выражение для проверки баланса скобок.
А html как раз является довольно ярким представителем языков с произвольной вложенностью. Хотя может быть задание как раз направлено на то, чтобы студенты как можно полнее осознали сей факт. Ну а как делать - вполне понятно. Если дружишь с python-ом - там один из парсеров html из стандартной поставки построен именно на regex-пах. Всего 370 строк легкочитаемого кода. |
|
|
bynet |
20.5.2008, 13:40
Сообщение
#10
|
Студент Группа: Участник Сообщений: 69 Регистрация: 17.3.2008 Из: Belarus Пользователь №: 124 Спасибо сказали: 0 раз(а) Репутация: 0 |
насчет вложенности - минимально. Мне бы примерчик, например как заменить ссылку, или текст. А то в тех примерах столько много всего что сразу легко запутаться.
Возьмем к примеру такой код <html> <body> <a href="http://www.crossplatform.ru">Best qt forum</a> </bode> <html> вот как сделать с помощью рег.выражения, чтобы в QTextEdit отобразилась эта ссылка. Как я загружаю из файла показано в первом сообщении Сообщение отредактировал bynet - 20.5.2008, 13:41 |
|
|
Текстовая версия | Сейчас: 27.12.2024, 5:14 |