gpt4 book ai didi

windows - lua的字符串模式匹配为什么要这样做呢?

转载 作者:可可西里 更新时间:2023-11-01 14:04:31 25 4
gpt4 key购买 nike

我有一个监控 CPU 和 GPU 温度的外部应用程序...

我在 alien extension 中使用 Lua获取这些值(通过 GetWindowText )并对这些值进行一些模式匹配,有效地从字符串中提取温度数字,默认情况下显示为 CPU 67.875 °C。 ..
但也许我对模式在 LUA 中的工作方式有错误的想法(因为它们看起来不像正则表达式)?

我使用的模式是 [%d]+[.%d+]*,它应该匹配 0 到 100.0 之间的任何数字,对吗?
然而奇怪的是,我是getting incredibly strange output当数值达到 56.5 度左右时(查看链接)

为什么会这样?
以及如何以 XYY.ZZZ 格式提取 0 到 100 之间的正确浮点值(作为字符串),其中 X 不是可选的, Y 是可选的,. 是可选的,除非 Z 存在?

最佳答案

您看到了累积舍入误差的影响,因为 0.16 无法用 float 精确表示。下面的代码执行得更好:

local n = 0
while n < 10000 do
local s = tostring(n/100)
local t = s:match("[%d]+[.%d+]*")
print(t)
n = n + 16
end

现在,对于您的问题,请尝试以下更简单的模式:

s="CPU 67.875 °C"
print(s:match("CPU +(.-) +"))

关于windows - lua的字符串模式匹配为什么要这样做呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16586770/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com