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



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

2453.675667756

来自以下句子:

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

我使用的是这个代码:

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

然而,它给了我这样的结果:

6756667756

这根本不正确。

你能帮我吗?

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

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

参见演示

在Qt:

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

正则表达式匹配:

  • d+-1个或多个数字
  • .-文字点
  • d+-1个或多个数字
  • (?=s*w:)-一个正向前瞻,确保在匹配的最后一个数字之后有零个或多个空白符号,w后面跟着:(但该子串没有被使用,只是检查是否存在,因为前瞻是零宽度断言

您可以使用一个更简单的正则表达式,而不需要带捕获组的前瞻:

(d+.d+)s*w:

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

最新更新