我必须解析来自串行总线的tsv字符串。
要识别其他数据中的字符串,它有一个由#!
组成的标题。
此字符串的一个示例是:
#! 0.01 0.02 10.5
我想匹配此字符串中的浮点数,但它们的数量是未知的。
目前我正在使用此模式使用全局正则表达式
[0-9]+\.[0-9]+
它可以工作,但它不会检查标题。
我该怎么做?
由于
答案 0 :(得分:0)
正如 peppe 在评论中所说,您可以检查一行是否以您的标记开头,然后使用正则表达式捕获数字:
if (line.startsWith(QLatin1String("#!")))
{
QRegExp re("([0-9]+\\.[0-9]+)");
QStringList list;
int pos = 0;
while ((pos = re.indexIn(line, pos)) != -1)
{
double value = re.cap(1).toDouble();
qDebug() << value;
pos += re.matchedLength();
}
}
另一种方法是检查整行,然后用不必要的部分拆分:
QRegExp re("^#!(\\s+[0-9]+\\.[0-9]+\\s*)+$");
if (re.indexIn(line) != -1)
{
QStringList list = line.split(QRegExp("[^0-9\\.]");
for (int i = 0; i < list.size(); ++i
{
double value = list.at(i).toDouble();
qDebug() << value;
}
}