【发布时间】:2020-06-18 01:06:33
【问题描述】:
我正在尝试使用 Lua 标记 NMEA 句子。当前的 Lua 版本(可在 https://www.lua.org/cgi-bin/demo 获得)按预期工作:
local index = 0
for token in string.gmatch("$HEHDT,99.00,,T*2F", "[%w.]*") do
print(string.format("%d: %s", index, token))
index = index + 1
end
给予:
0:
1: HEHDT
2: 99.00
3:
4: T
5: 2F
Your program ran successfully.
但是,使用 Lua 5.1.4(以及 Wireshark 中的 5.2.4)
0:
1: HEHDT
2:
3: 99.00
4:
5:
6: T
7:
8: 2F
9:
有没有办法使用旧 Lua 实现与使用当前版本相同的标记化输出?
【问题讨论】:
-
如果没有真正成熟的正则表达式支持,这似乎是不可能的。
-
@WiktorStribiżew 在当前的 Lua 版本中没有成熟的正则表达式绝对是可能的 - 如第一个示例所示。我也在寻找在以前的版本中这样做的方法。
-
这就是我的意思:在 5.4.2 中似乎不可能,空匹配的引擎行为已经改变。
-
@WiktorStribiżew - Lua 模式足够强大,因此在大多数情况下(IMO 95%)你不需要成熟的正则表达式。
标签: lua tokenize lua-patterns wireshark-dissector