使用 QRegularExpression 从句子中提取小数

Extract a decimal number from a sentence using a QRegularExpression

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

2453.6756667756

来自以下句子:

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

我正在使用此代码:

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

但是它给了我这个结果:

6756667756

完全不正确。

你能帮帮我吗?

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

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

demo

在 Qt 中:

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

正则表达式匹配:

  • \d+ - 1 个或多个数字
  • \. - 文字点
  • \d+ - 1 个或多个数字
  • (?=\s*w:) - 确保在最后一个数字匹配后有零个或多个空白符号和 w 后跟 :(但不消耗此子字符串,只是检查存在,因为前瞻是 zero-width 断言 ).

您可以使用 simpler regex 而无需先行捕获组:

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

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