gpt4 book ai didi

regex - lua gsub 特殊替换产生无效的捕获索引

转载 作者:行者123 更新时间:2023-12-04 01:34:14 29 4
gpt4 key购买 nike

我有一段 lua 代码(在 Corona 中执行):

local loginstr = "emailAddress={email} password={password}"
print(loginstr:gsub( "{email}", "tester@test.com" ))

此代码生成错误:

捕获索引无效

虽然我现在知道这是因为在 gsub 模式中没有正确指定花括号,但我不知道如何修复它。

我应该如何形成 gsub 模式,以便我可以用电子邮件地址值替换占位符字符串?

我浏览了所有我能找到的面向 lua 的网站,但大多数文档似乎都围绕着不相关的情况。

最佳答案

正如我在上面的评论中所建议的,当电子邮件被编码为 URL 参数时,用于编码“@”字符的 %40 将用作捕获索引。由于搜索模式没有任何捕获(更不用说 40 个),这将导致问题。

有两种可能的解决方案:您可以对编码字符串进行解码,或者对替换字符串进行编码以转义其中的“%”字符。根据您要对最终结果执行的操作,您可能需要同时执行这两项操作。

以下例程(我从 here 获取 - 未测试)可以解码编码字符串:

function url_decode(str)
str = string.gsub (str, "+", " ")
str = string.gsub (str, "%%(%x%x)",
function(h) return string.char(tonumber(h,16)) end)
str = string.gsub (str, "\r\n", "\n")
return str
end

为了转义字符串str中的%字符,你可以使用:

str:gsub("%%", "%%%%")

'%' 字符被转义为 '%%',并且在搜索模式和替换模式中都需要转义(因此替换中的 % 字符数量)。

关于regex - lua gsub 特殊替换产生无效的捕获索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7787509/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com