crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Помогите разобраться с QRegExp
XpycT
  опции профиля:
сообщение 1.8.2009, 16:29
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 43
Регистрация: 7.7.2009
Пользователь №: 883

Спасибо сказали: 0 раз(а)




Репутация:   0  


Всем привет :rolleyes:
Решил добавить в клиент BBCode-редактора предпросмотр. Проблема состоит в том, что не могу разобраться, почему при замене первого ББ-тега, дальше ничего не работает.
Как пример на входе у меня
[url=http://google.com]ссылка[/url]

на выходе получаю все нормально
<a href='http://google.com' title='http://google.com'>ссылка</a>

Но вот если на входе будет
[url=http://google.com]ссылка[/url] [url=http://google.com]ссылка[/url]

то на выходе уже получаю
<a href='http://google.com]ссылка[/url] [url=http://google.com' title='http://google.com]ссылка[/url] [url=http://google.com'>ссылка</a>


Вот кусок кода замены:
QString PreviewDialog::parseBBcode(const QString &string)
{
    QString tmpStr=string;
    tmpStr.replace(QRegExp("\\[image\\](.*)\\[/image\\]"),"<img src='\\1' border='0'/>");
    /*......*/
    tmpStr.replace(QRegExp("\\[url=(.*)\\](.*)\\[/url\\]"),"<a href='\\1' title='\\1'>\\2</a>");

    return tmpStr;
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Kagami
  опции профиля:
сообщение 1.8.2009, 17:53
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 601
Регистрация: 2.2.2009
Пользователь №: 523

Спасибо сказали: 101 раз(а)




Репутация:   9  


Посмотри на функцию void QRegExp::setMinimal ( bool minimal )
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
XpycT
  опции профиля:
сообщение 1.8.2009, 20:21
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 43
Регистрация: 7.7.2009
Пользователь №: 883

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Kagami @ 1.8.2009, 17:53) *
Посмотри на функцию void QRegExp::setMinimal ( bool minimal )


Спасибо, для разных тегов работает прекрасно, но вот когда вложить одинаковые теги друг в друга (например цитаты), то закрывается криво... первый открытый тег с первым закрытым :(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 1.8.2009, 21:57
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(XpycT @ 2.8.2009, 0:21) *
но вот когда вложить одинаковые теги друг в друга (например цитаты), то закрывается криво
Регулярные выраженя не работают для пар скобок, или как там это называется по научному.


можно ещё попробовать установить синтаксис №2 + минимум, да и то мало вероятно для вложенных тэгов.

И вот ещё подобная тема нашлась: Регулярное выражение от <form...> до первого </form>
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 4.12.2024, 13:48