qregexp 从字符串中提取所有数字

qregexp extract all numbers from string

我对正则表达式很菜鸟,我只想从字符串中获取所有数字。

QRegExp rx;
rx.setPattern("\d+");
rx.indexIn("this string contains number 123 and 567*872");
QStringList MyList = rx.capturedTexts();

预期结果是:123、567 和 872。 我得到的是: 123

您需要使用

这样的循环来获取所有匹配项
QRegExp rx("\d+");
QString str = ""this string contains number 123 and 567*872"";
QStringList MyList;
int pos = 0;

while ((pos = rx.indexIn(str, pos)) != -1) {
    MyList << rx.cap(0);
    pos += rx.matchedLength();
}

此处,rx.cap(0) 访问第 0 组,即整个比赛。 QRegExp::indexIn 尝试在 str 从位置 offset (默认为0)。如果 offset 为 -1,则从最后一个字符开始搜索;如果 -2,在倒数第二个字符处;等等。虽然位置不是 -1,但我们可以遍历字符串中的所有匹配项。