使用QRegularExpression从句子中提取十进制数

时间:2015-12-28 23:03:59

标签: c++ regex qt qregularexpression

我目前正在尝试提取以下十进制数字:

  

2453.6756667756

来自以下句子:

  

ID:1 x:1202 y:2453.6756667756 w:242

我正在使用此代码:

regularExpression.setPattern("(\\d+)(?:\\s*)(w:)")

然而它给了我这个结果:

  

6756667756

这根本不正确。

你能帮我吗?

1 个答案:

答案 0 :(得分:4)

您可以使用以下正则表达式:

\d+\.\d+(?=\s*w:)

请参阅demo

在Qt:

regularExpression.setPattern("\\d+\\.\\d+(?=\\s*w:)")

正则表达式匹配:

  • \d+ - 一位或多位
  • \. - 一个文字点
  • \d+ - 一位或多位
  • (?=\s*w:) - 确定在最后一个数字匹配后有一个零个或多个空白符号,并且w后跟:(但这个子字符串不被消耗,只是检查因为前瞻是零宽度断言)。

您可以使用simpler regex而无需预测捕获组:

(\d+\.\d+)\s*w:

然后,该值将在第1组中。