以此为例
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+)\\)")
这样的东西来改变模式