使用 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 组中。
我目前正在尝试提取以下十进制数:
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 组中。