Возьми это как пример
QString("= LINK(aaa) + 2 + LINK(bbb) + LINK(ccc)");
Я хотел бы найти все вхождения текста, содержащиеся в LINK().
В моем случае он должен возвращать aaa, bbb и ccc
Возьми это как пример
QString("= LINK(aaa) + 2 + LINK(bbb) + LINK(ccc)");
Я хотел бы найти все вхождения текста, содержащиеся в LINK().
В моем случае он должен возвращать aaa, bbb и ccc
Используйте для этого QRegExp
.
QString s("= LINK(aaa) + 2 + LINK(bbb) + LINK(ccc)");
QRegExp rx("LINK\\((.+)\\)");
rx.setMinimal(true);
int i = rx.indexIn(s);
while(i != -1)
{
qDebug() << rx.capturedTexts() << rx.cap(1);
i = rx.indexIn(s, i) + rx.cap(0).length();
}
QRegExp::indexIn
вернет позицию первого совпадения. Добавление длины захваченного текста позволяет просматривать всю строку.
В моем случае я должен использовать QRegExp::setMinimal()
, чтобы регулярное выражение не было жадным. Если у вас есть только буквы или цифры, вы можете изменить шаблон с помощью чего-то вроде QRegExp rx("LINK\\((\\w+)\\)")