Задача: реализовать подсчет числа слов в поле. Есть еще несколько нюансов, но в данном случае они неважны.
Для теста и написания регулярного выражения был использован RegexBuddy, flavor-PERL.
Регулярка выглядит следующим образом:
\b\w*(\/*\w*\-*\w*)*\w*\b
В Qt написал слот, который связан с сигналом textchanged.
void MainWindow::WordCounterSlot()
{
QRegExp count_rule ("\\b\\w*(\\/*\\w*\\-*\\w*)*\\w*\\b");
count_rule.setPatternSyntax(QRegExp::RegExp2);
count_rule.indexIn(ui->textEdit->toPlainText());
QStringList list = count_rule.capturedTexts(); // для отладки
ui->lcdNumber->display(count_rule.captureCount());
}
До ввода текста показывает 0, при вводе всегда единицу.
Есть мысль что индексация происходит не по всему тексту, а только до первого полного совпадения.
Задачу постараюсь решить сам, подскажите, почему матчится только первое выражение?