需要从 URL 中删除特定参数
2021-2-22 22:34:17
收藏:0
阅读:155
评论:2
我刚接触 Lua 库,现在有一个需求,需要从特定参数中删除它及其值: 例如:
字符串 1:?xyz=true&toekn=4234dadsasda
字符串 2:?toekn=4234dadsasda&test=pass
需要在删除令牌及其值后得到以下输出
字符串 1:?xyz=true
字符串 2:?test=pass
我尝试了下面的 Lua gsub 函数,但没有成功:
string.gsub(args,"token=.*"," ")
感谢任何帮助。
点赞
用户1442917
你可能还需要考虑其他条件(使用 & 和 ; 作为分隔符[1]),以及一些特殊情况(结尾有分隔符和包含 token 子串的情况):
text:gsub("([&;]?)%f[%a]token=[^&;]+([&;]?)",
function(s1, s2) return s1 and s2 and #(s1..s2) > 1 and s1 or "" end)
这个解决方案能够正确处理包含 subtoken 参数和使用 ; 作为分隔符的查询字符串。该模板使用了 %f[%a],这是一个 frontier pattern,表示非字母到字母的空字符串边界(包括字符串的第一个字符)。
[1] W3C 建议所有 Web 服务器支持使用分号分隔符,以允许在 HTML 文档中的 URL 的 application/x-www-form-urlencoded 查询字符串中使用 ampersand 分隔符,而无需对 ampersands 进行实体转义(查询字符串的 wikipedia 文章)。
2021-02-23 06:11:22
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的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 代码?

如果您只能使用两个查询参数且不超过您的输入中所示的两个,则可以使用以下代码:
text:gsub("&?token=[^&]+&?", "")或者,如果您有多个查询参数,则可以使用以下代码:
text:gsub("([&?])token=[^&]+&?", "%1"):gsub("(.*)&$", "%1")请参见在线Lua演示#1和在线Lua演示#2。
细节:
&?- 可选的&token=- 一个文字字符串[^&]+- 一个或多个字符,不包括&&?- 可选的&字符。在第二种情况下,
:gsub("([&?])token=[^&]+&?", "%1")将匹配的部分替换为token之前的?或&,而下一个gsub("(.*)&$", "%1")则在参数出现在字符串末尾时删除字符串末尾的&。