1

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

2453.6756667756

从下面的句子:

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

我正在使用这段代码:

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

但是它给了我这个结果:

6756667756

这根本不正确。

请问你能帮帮我吗 ?

4

1 回答 1

4

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

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

演示

在 Qt 中:

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

正则表达式匹配:

  • \d+- 1 位或多位数字
  • \.- 一个字面点
  • \d+- 1 位或多位数字
  • (?=\s*w:)- 肯定的前瞻,确保在最后一个数字匹配后有零个或多个空格符号,w然后是a :(但不消耗此子字符串,只是检查是否存在,因为前瞻是零宽度断言)。

您可以使用更简单的正则表达式,而无需使用捕获组进行前瞻:

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

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

于 2015-12-28T23:09:25.833 回答