Rec*_*als 4 windows winapi lua lua-patterns
我有一个监控CPU和GPU温度的外部应用程序......
我正在使用Lua和外来扩展来获取这些值(通过GetWindowText)并对这些值进行一些模式匹配,有效地从字符串中提取温度数字,默认情况下显示为CPU 67.875 °C......
但也许我对于LUA中的模式如何工作有错误的想法(因为它们看起来不像正则表达式)?
我使用的模式[%d]+[.%d+]*应该匹配0到100.0之间的任何数字,对吗?
奇怪的是,当值达到56.5度左右时,我得到了令人难以置信的奇怪输出(见链接).
为什么会这样?
如何以0到100之间的格式提取正确的浮点值(作为字符串)XYY.ZZZ,其中X不是可选的,Y是可选的,.除非Z存在,否则是可选的?
您正在看到累积舍入误差的影响,因为0.16无法在浮点中精确表示.以下代码表现更好:
local n = 0
while n < 10000 do
local s = tostring(n/100)
local t = s:match("[%d]+[.%d+]*")
print(t)
n = n + 16
end
Run Code Online (Sandbox Code Playgroud)
现在,针对您的问题,请尝试以下更简单的模式:
s="CPU 67.875 °C"
print(s:match("CPU +(.-) +"))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
516 次 |
| 最近记录: |