![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
bynet |
![]() ![]()
Сообщение
#1
|
![]() Студент ![]() Группа: Участник Сообщений: 69 Регистрация: 17.3.2008 Из: Belarus Пользователь №: 124 Спасибо сказали: 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 |
![]()
Сообщение
#2
|
Студент ![]() Группа: Новичок Сообщений: 31 Регистрация: 10.10.2007 Пользователь №: 8 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
я правильно понимаю? Нужно сделать полноценный парсер HTML при помощи регулярных выражений ?
![]() |
|
|
ViGOur |
![]()
Сообщение
#3
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
QTextEdit вроде как и без регулярных выражений умеет правильно отображать html странички, а не только код.
А обязательно регулярные выражения или как? |
|
|
Litkevich Yuriy |
![]()
Сообщение
#4
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
видимо это задание такое, освоить регулярные выражения.
|
|
|
bynet |
![]()
Сообщение
#5
|
![]() Студент ![]() Группа: Участник Сообщений: 69 Регистрация: 17.3.2008 Из: Belarus Пользователь №: 124 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
нужно освоить регулярные выражения, это в универе задание. Я понимаю что QTextEdit сам может это всё сделать, но нужно имеено рег.выражения использовать. Помогите пожалуйста.
Сообщение отредактировал bynet - 20.5.2008, 10:05 |
|
|
Litkevich Yuriy |
![]()
Сообщение
#6
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
ну начни подбирать регулярные выражения, которые будут удалять теги, чтобы только текст остался.
Для этих экспериментов можно пользоваться разными программами: * %QTDIR%\examples\tools\regexp * RegExp Planner --- И ведь ты уже создавал тему "Регулярные выражения QT, отображение HTML", в ней бы и продолжал |
|
|
bynet |
![]()
Сообщение
#7
|
![]() Студент ![]() Группа: Участник Сообщений: 69 Регистрация: 17.3.2008 Из: Belarus Пользователь №: 124 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
ну начни подбирать регулярные выражения, которые будут удалять теги, чтобы только текст остался. Для этих экспериментов можно пользоваться разными программами: * %QTDIR%\examples\tools\regexp * RegExp Planner --- И ведь ты уже создавал тему "Регулярные выражения QT, отображение HTML", в ней бы и продолжал А как мне с сылками быть? |
|
|
Litkevich Yuriy |
![]()
Сообщение
#8
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
ну я думаю до ссылок доберешся в свое время, начни с простого.
|
|
|
Tonal |
![]()
Сообщение
#9
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: ![]() ![]() ![]() |
Вообще-то задание довольно уродское: принципиальное ограничение регулярных языков - это неумение работать со структурами произвольной вложенности. Грубо говоря, нельзя написать регулярное выражение для проверки баланса скобок.
А html как раз является довольно ярким представителем языков с произвольной вложенностью. Хотя может быть задание как раз направлено на то, чтобы студенты как можно полнее осознали сей факт. ![]() Ну а как делать - вполне понятно. ![]() Если дружишь с python-ом - там один из парсеров html из стандартной поставки построен именно на regex-пах. Всего 370 строк легкочитаемого кода. ![]() |
|
|
bynet |
![]()
Сообщение
#10
|
![]() Студент ![]() Группа: Участник Сообщений: 69 Регистрация: 17.3.2008 Из: Belarus Пользователь №: 124 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
насчет вложенности - минимально. Мне бы примерчик, например как заменить ссылку, или текст. А то в тех примерах столько много всего что сразу легко запутаться.
Возьмем к примеру такой код <html> <body> <a href="http://www.crossplatform.ru">Best qt forum</a> </bode> <html> вот как сделать с помощью рег.выражения, чтобы в QTextEdit отобразилась эта ссылка. Как я загружаю из файла показано в первом сообщении Сообщение отредактировал bynet - 20.5.2008, 13:41 |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 10.7.2025, 18:30 |