Lua - find/match 通过 html 源返回的信息并创建新变量

Lua - find/match information returned via html source and create new variables

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

返回

我需要的值是根据 <script> var sockstates = 记录的,例如 [1,0,1,0] ` 但对于下面的每个值,它可以是任何 1/0。

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

任何有关我如何专注于该部分并提取值的帮助,将不胜感激。

local responseBody = [[ Example source code returned via http.request - <title>EnerGenie LAN Power Manager</title>

<meta http-equiv="content-type" content="text/html; charset=utf-8" /><link rel="stylesheet" type="text/css" href="s.css" />

<script>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;
</script>]]

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

print(socket1, socket2, socket3, socket4)

[] 是用于定义字符 class 的魔法字符。如果你想从字面上匹配它们,你需要使用 %.

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

提供预期的结果。请注意您有 5 个捕获。方括号中的 4 个值是捕获 2-5。你打印 1-4.