加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – 为什么lua的字符串模式匹配呢?

发布时间:2020-12-14 03:53:32 所属栏目:Windows 来源:网络整理
导读:我有一个监控CPU和GPU温度的外部应用程序…… 我使用Lua和alien extension来获取这些值(通过GetWindowText)并对这些值进行一些模式匹配,有效地从字符串中提取温度数字,默认显示为CPU 67.875°C …… 但也许我对LUA中的模式如何工作有错误的想法(因为它们看起
我有一个监控CPU和GPU温度的外部应用程序……

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

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

为什么会这样?
如何以XYY.ZZZ的格式提取0到100之间的正确浮点值(作为字符串),其中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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读