正则表达式: "-?(([1-9]\\d*\\.\\d*)|(0\\.\\d*[1-9]\\d*)|([1-9]\\d*))"
QString data = "12.31 next 37.21";
QRegExp rx("-?(([1-9]\\d*\\.\\d*)|(0\\.\\d*[1-9]\\d*)|([1-9]\\d*))");
int p = 0;
qDebug() << "begin";
QStringList data_list;
while ((p = rx.indexIn(data, p)) != -1)
{
data_list.append(rx.cap(1));
p += rx.matchedLength(); // 上一个匹配的字符串的长度
}
qDebug() << data_list;
qDebug() << "end";
输出结果