-3

":" の後ろのすべての文字列を一致させる方法は? 例: 「roll:3.23423」の「3.23423」または「smth:true」の「true」と一致させたい。

4

1 に答える 1

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();
}
于 2014-09-15T15:15:07.903 に答える