QRegExp захватывает лишнее (Qt4)

Модератор: Модераторы разделов

Аватара пользователя
Assuri
Сообщения: 678
Статус: #include <brain.h>
ОС: Fedora 12

QRegExp захватывает лишнее

Сообщение Assuri »

Я делаю подсветку синтаксиса тектового редактора. Но у меня возникли некоторые проблемы с этим. Дело в том, что когда я создаю какой-нибудь QRegExp и использую его, то он подсвечивает текст от самого левого тега до самого правого тега, хотя между этими тегами тоже есть открывающиеся и закрывающиеся. Не знаю как исправить, делал на примере из Qt Assistant:

Код:

HighlightingRule rule; italicFormat.setFontItalic(true); rule.pattern = QRegExp("\\(.*\\)"); rule.format = italicFormat; highlightingRules.append(rule); ------------------ void HighLighter::highlightBlock(const QString& text) { int length = 0; int index = 0; foreach (HighlightingRule rule, highlightingRules) { QRegExp expression(rule.pattern); index = text.indexOf(expression); while (index >= 0) { length = expression.matchedLength(); setFormat(index, length, rule.format); index = text.indexOf(expression, index + length ); } } setCurrentBlockState(0); }


Например в строке "Hello \( my \) dear \( granny\)" подсвеченно будет не "my" и "granny", а "my dear granny".
Как исправить?
Спасибо сказали:
Аватара пользователя
eduard_pustobaev
Сообщения: 2629
Статус: Ленивец
ОС: Arch/Debian.

Re: QRegExp захватывает лишнее

Сообщение eduard_pustobaev »

Может QScintilla заюзать?
В дисгармонии со вселенной.
Спасибо сказали:
Аватара пользователя
Assuri
Сообщения: 678
Статус: #include <brain.h>
ОС: Fedora 12

Re: QRegExp захватывает лишнее

Сообщение Assuri »

eduard_pustobaev писал(а):
08.12.2007 19:13
Может QScintilla заюзать?

В первый раз слышу. А что это?

P.S. У меня Assistant не находит такого класса, но сейчас скачиваю доки и либы - надеюсь после этого найдет.
Спасибо сказали:
Аватара пользователя
Atragor
Сообщения: 681
Статус: ...

Re: QRegExp захватывает лишнее

Сообщение Atragor »

Тыц

Вряд ли Assistant о нем знает.
If you were MEANT to understand it, we wouldn't have called it 'code' © bash.org
Спасибо сказали: