-? : 表示一个或者零个负号。?表示重复前面的字符0次或者1次
\d+:\d表示匹配一位数字,是转义的字符,+表示前面的\d(数字)重复一次或者多次
QJsonValue value = object["result"];
qDebug() << value.toString();
QRegExp rx("(-?\\d+\\.\\d+)");
QString str = value.toString();
QStringList list;
int pos = 0;
while ((pos = rx.indexIn(str, pos)) != -1) {
list << rx.cap(1);
pos += rx.matchedLength();
}
qDebug() << list;
以上代码可以实现从
"[403.47696019871785,510.43696873908652,319.24014416589341,179.42033708287974,-0.33817427291932228,-44.20393758341347]"
的QString格式字符串中提取数字,提取后的格式为
("403.47696019871785", "510.43696873908652", "319.24014416589341", "179.42033708287974", "-0.33817427291932228", "-44.20393758341347")
的QString格式字符串数组。
参考
Qt正则表达式(匹配正数、负数、浮点数)
Qt文档库