我目前正在尝试提取以下十进制数字:
2453.6756667756
来自以下句子:
ID:1 x:1202 y:2453.6756667756 w:242
我正在使用此代码:
regularExpression.setPattern("(\\d+)(?:\\s*)(w:)")
然而它给了我这个结果:
6756667756
这根本不正确。
你能帮我吗?
答案 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组中。