regex - 需要从 url 中删除特定参数

标签 regex lua gsub

我是 Lua 库的新手,我有一个用例,我必须删除特定参数及其值: 例如:

字符串 1:?xyz=true&toekn=4234dadsasda

字符串 2:?toekn=4234dadsasda&test=pass

删除 token 及其值后需要这样的输出

字符串 1 : ?xyz=true

字符串 2:?test=pass

我尝试了下面的 Lua gsub 函数,但没有成功:

string.gsub(args, "token=.*", "")

如有任何帮助,谢谢

最佳答案

您可能需要考虑其他条件(使用 &; 作为分隔符 [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 查询字符串,而无需实体转义 & 符号 ( wikipedia article on query string )。

关于regex - 需要从 url 中删除特定参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66324427/

相关文章:

javascript - 如何使用 Javascript/JQuery/JSON 获取字符串的子集?

java - 如何从 ifs 文本文件中提取 2D double 组 (Java)

javascript - 正则表达式:在空格上拆分字符串+每个特殊字符单独包含

c++ - 如何从 C++ 读取 Lua 表返回值

c++ - LuaBridge 没有正确创建构造函数

module - 在 Lua 中调用 require()d 模块的函数给我 "attempt to index local ' x'( bool 值)”

ruby - 如何在 ruby​​ 中使用反斜杠和斜杠 "/"gsub 斜杠 "\/"

javascript - 货币/百分比正则表达式

Ruby 正则表达式 gsub 除了 + 开头的任何其他字符(电话号码)

r - 当找不到匹配项时,gsub 返回一个空字符串