Mat*_*t W 3 regex lua replace gsub
我有一段lua代码(在Corona中执行):
local loginstr = "emailAddress={email} password={password}"
print(loginstr:gsub( "{email}", "tester@test.com" ))
Run Code Online (Sandbox Code Playgroud)
此代码生成错误:
无效的捕获索引
虽然我现在知道这是因为在gsub模式中没有正确指定花括号,但我不知道如何解决它.
我应该如何形成gsub模式,以便我可以用电子邮件地址值替换占位符字符串?
我环顾了所有可以找到的面向浏览器的网站,但大多数文档似乎都围绕着无关联的情况.
正如我在上面的评论中所建议的那样,当电子邮件被编码为URL参数时,用于编码'@'字符的%40将被用作捕获索引.由于搜索模式没有任何捕获(更不用说其中40个),这将导致问题.
有两种可能的解决方案:您可以解码编码的字符串,也可以编码替换字符串以转义其中的'%'字符.根据您对最终结果的处理方式,您可能需要同时执行这两项操作.
以下例程(我从这里获取 - 未经测试)可以解码编码的字符串:
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
Run Code Online (Sandbox Code Playgroud)
要转义字符串中的%字符str,您可以使用:
str:gsub("%%", "%%%%")
Run Code Online (Sandbox Code Playgroud)
'%'字符被转义为'%%',并且需要在搜索模式和替换模式上进行转码(因此替换中的%字符数量).