Lua - 查找/匹配通过html源返回的信息并创建新变量

我正在尝试通过设备返回的html源代码来提取4个插座的状态,该状态由http.request返回。

我需要的值针对“\u003cscript\u003e var sockstates =”记录,例如 [1,0,1,0],但可以是每个下面的任何1/0。

我创建了以下脚本作为示例来尝试并通过,但无法提取在方括号[1,1,1,1]之间报告的4个值

任何帮助我如何专注于该部分并提取值的方法都将不胜感激。

local responseBody = [[通过 http.request 返回的示例源代码- \u003ctitle\u003e EnerGenie LAN Power Manager \u003c / title\u003e

\u003cmeta http-equiv = \" content-type \" content = \" text / html; charset = utf-8 \" / \> \n \n \u003clink rel = \" stylesheet \" type = \" text / css \" href = \" s.css \" / \> \n \n \u003cscript\u003e var sockstates = [1,1,1,1];var mac="C58A6B4AACE2";var ipid=0;var serv=0;var trycon=0;var active=0;var actbtn=1;var warn=0;var timer=null;var period=3000;\n\u003c/script\u003e]] 

本地socket1,socket2,socket3,socket4 = responseBody:match("(.-)\u003cscript\u003evar sockstates = [(%d),(%d),(%d),(%d)]; var mac = \")

print(socket1,socket2,socket3,socket4)

原文链接 https://stackoverflow.com/questions/70519872

点赞
stackoverflow用户2858170
stackoverflow用户2858170

[]是用来定义字符类的魔法字符。 如果您想要匹配它们的字面意义,您需要使用%进行转义。

responseBody:match("(.-)<script>var sockstates = %[(%d),(%d),(%d),(%d)%];var mac=")

提供了期望的结果。 只需注意您有5个捕获组。 方括号中的4个值是第2到第5个捕获。 您要打印的是1到4。

2021-12-29 13:32:08