如何匹配“:”后面的每个字符串? 例如:想要匹配“roll:3.23423”中的“3.23423”或“smth:true”中的“true”。
答案 0 :(得分:2)
试试这个:
QRegExp rx("[a-z]+\:.+");
QString ss = "roll:3.23423";
int poss = 0;
while ((poss = rx.indexIn(ss, poss)) != -1) {
qDebug( )<< rx.cap(0).split(":").last();
poss += rx.matchedLength();
}
输出:
"3.23423"
但有一个人告诉我split()
可能很慢,所以你也可以使用:
QRegExp rx("[a-z]+\:.+");
QString ss = "roll:3.23423";
int poss = 0;
while ((poss = rx.indexIn(ss, poss)) != -1) {
QString g = rx.cap(0);
int p = rx.cap(0).indexOf(":");
qDebug( )<< g.mid(p+1);
poss += rx.matchedLength();
}
它应该更快。
更新(之前)。使用这个循环:
while ((poss = rx.indexIn(ss, poss)) != -1) {
QString g = rx.cap(0);
int p = rx.cap(0).lastIndexOf(":");
qDebug( )<< g.mid(0,p);
poss += rx.matchedLength();
}