需要从 url 中删除特定参数
Need to remove specific parameter from url
我是 Lua 库的新手,我有一个用例,我必须删除特定参数及其值:
例如:
String 1 : ?xyz=true&toekn=4234dadsasda
String 2 : ?toekn=4234dadsasda&test=pass
删除令牌及其值后需要这样的输出
String 1 : ?xyz=true
String 2 : ?test=pass
我尝试了下面的 Lua gsub 函数,但没有成功:
string.gsub(args, "token=.*", " ")
如有任何帮助,谢谢
如果您只能有两个查询参数并且输入中显示的不超过两个,您可以使用
text:gsub("&?token=[^&]+&?", "")
或者,如果你有多个查询参数,你可以使用
text:gsub("([&?])token=[^&]+&?", "%1"):gsub("(.*)&$", "%1")
参见online Lua demo #1 and the online Lua demo #2。
详情:
&?
- 一个可选的 &
token=
- 文字字符串
[^&]+
- &
以外的一个或多个字符
&?
- 一个可选的 &
字符。
在第二个解决方案中,:gsub("([&?])token=[^&]+&?", "%1")
在 token
之前用 ?
或 &
替换匹配项,下一个 gsub("(.*)&$", "%1")
删除 &
在字符串的末尾,以防参数出现在字符串的末尾。
您可能需要考虑其他条件(使用 &
和 ;
作为分隔符 [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 服务器都支持分号分隔符,以允许 application/x-www-form-urlencoded 在 HTML 文档中的 URL 中查询字符串,而不必实体转义 & 符号(wikipedia article on query string).
我是 Lua 库的新手,我有一个用例,我必须删除特定参数及其值: 例如:
String 1 : ?xyz=true&toekn=4234dadsasda
String 2 : ?toekn=4234dadsasda&test=pass
删除令牌及其值后需要这样的输出
String 1 : ?xyz=true
String 2 : ?test=pass
我尝试了下面的 Lua gsub 函数,但没有成功:
string.gsub(args, "token=.*", " ")
如有任何帮助,谢谢
如果您只能有两个查询参数并且输入中显示的不超过两个,您可以使用
text:gsub("&?token=[^&]+&?", "")
或者,如果你有多个查询参数,你可以使用
text:gsub("([&?])token=[^&]+&?", "%1"):gsub("(.*)&$", "%1")
参见online Lua demo #1 and the online Lua demo #2。
详情:
&?
- 一个可选的&
token=
- 文字字符串[^&]+
-&
以外的一个或多个字符
&?
- 一个可选的&
字符。
在第二个解决方案中,:gsub("([&?])token=[^&]+&?", "%1")
在 token
之前用 ?
或 &
替换匹配项,下一个 gsub("(.*)&$", "%1")
删除 &
在字符串的末尾,以防参数出现在字符串的末尾。
您可能需要考虑其他条件(使用 &
和 ;
作为分隔符 [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 服务器都支持分号分隔符,以允许 application/x-www-form-urlencoded 在 HTML 文档中的 URL 中查询字符串,而不必实体转义 & 符号(wikipedia article on query string).