模式匹配以不同的非可打印字符结尾的字符串
这可能很容易实现,但我无法想出最优雅和简单的方法来产生我想要的结果。 基本上,一个文本文件作为输入发送到我的程序。 此文件中的所有字符串都由回车符('\r'),换行符('\n')或两者的组合分隔。
现在,我的函数如下所示
local function file_Parse(input)
local inputTbl = {}
if input then
for lines in input:gmatch("%g*%G*") do
lines = lines:gsub("\r\n", "")
table.insert(inputTbl, #inputTbl + 1, lines)
end
end
return inputTbl
end
现在这很基本。 接收到的输入将类似于以下内容:
例如, DFEIJ-SDFA\r\nDAFK-DAFDAFEA\r\nDKLAJFDAKJFE-DFAKJ\r\n 。 现在请记住,我已经在我想要的字符串之间放置了\r\n。 但是,有时,我可能会在我想要的字符串之间随机混合回车和换行符的顺序或缺少其中之一。 这是我的问题。
现在它在我提供的函数中工作,但是对我来说,必须在这里键入lines = lines:gsub("\ r \ n","")真的很困扰我。 我觉得我应该能够在我的for循环内部的“lines:gmatch(”%g * %G *“)”行开始处理它,并自动不捕获那些不可打印的字符。 但是我无法弄清楚为什么最好的方法检查是否匹配了\r,\n或两者(或\ n \ r)之一,仅抓取可打印字符并忘记非可打印。
我尝试了各种方法,在很大程度上似乎没有捕获for循环中的“lines”并将其输入表中。 我尝试了以下一些内容:
("(%g*%G*)[\r\n]")
("(%g*%G*)[\r*\n*]")
("(%g*%G*)[\r-\n-]")
("(%g*%G*)[\r?\n?]")
("(%g*%G*)[%c]")
("(%g*%G*)[%c-]")
("(%g*%G*)[%c+]")
我阅读了http://lua-users.org/wiki/PatternsTutorial和http://www.lua.org/manual/5.2/manual.html#6.4.1资源,但未能正确地捕获所有可打印字符而不是非打印字符。 我希望得到一些建议,帮助我了解我做错了什么以及我正在寻找的方法的答案。
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在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中获取用户配置主目录的跨平台方法
正如EgorSkriptunoff在评论中所说,使用
%g应该可以实现你想要的功能,但需要注意的是它不捕获任何空格,因此如果您的行包含可打印和空格字符的混合,您需要使用像这样的语句:for lines in input:gmatch("[%g ]+") do这将在您展示的输入上产生以下三行: