Lua脚本模式匹配问题
2010-8-11 14:13:50
收藏:0
阅读:134
评论:2
首先,我在整个脚本编写过程中一直将此网站作为参考,并且它非常出色。我非常感激这里的每个人都是如此有用和知识渊博。考虑到这一点,我有一个关于 Lua 中匹配(模式匹配)的问题。我正在编写一个脚本,该脚本基本上从文件中获取输入并将其导入表中。我正在检查文件中作为我查询的主机的特定 MAC 地址。
if macFile then
local file = io.open(macFile)
if file then
for line in file:lines() do
local f = line
i, j = string.find ( f, "%x+" )
m = string.sub(f, i, j)
table.insert( macTable, m )
end
file:close()
end
这将文件解析为我稍后将使用的格式。一旦构建了表,我运行模式匹配序列,尝试通过迭代表并根据当前迭代与模式匹配来匹配来自表中的 MAC:
local output = {}
t = "00:00:00:00:00:00"
s = string.gsub( t, ":", "")
for key,value in next,macTable,nil do
a, p = string.find ( s, value )
matchFound = string.sub(s, a, p)
table.insert( output, matchFound )
end
这不返回任何输出,尽管当我在 Lua 提示符中逐行输入时,它似乎有效。我相信变量被正确传递。有什么建议吗?
原文链接 https://stackoverflow.com/questions/3459215
点赞
stackoverflow用户415823
如果您的 macFile
使用如下的结构:
012345678900
008967452301
000000000000
ffffffffffff
以下脚本应该可以工作:
macFile = "./macFile.txt"
macTable = {}
if macFile then
local hFile = io.open(macFile, "r")
if hFile then
for line in hFile:lines() do
local _,_, sMac = line:find("^(%x+)")
if sMac then
print("Mac address matched: "..sMac)
table.insert(macTable, sMac)
end
end
hFile:close()
end
end
local output = {}
t = "00:00:00:00:00:00"
s = string.gsub( t, ":", "")
for k,v in ipairs(macTable) do
if s == v then
print("Matched macTable address: "..v)
table.insert(output, v)
end
end
2010-08-12 19:05:24
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
我现在正要下班,无法深入查看您的问题,但下面的两行似乎非常奇怪。
t = "00:00:00:00:00:00" s = string.gsub( t, ":", "")
基本上您正在删除字符串
t
中的所有':'
字符。之后,您最终得到的s
是"000000000000"
。这可能不是您想要的答案?