Lua替换带函数的字符串

我想用一些函数替换匹配的字符串。

我使用了'%1'来查找字符串,但我无法使用匹配的字符串。

print(text)向我显示了%1,而不是匹配的字符串。

original_text = "替换${test01}和$ { test02}"

function replace_function(text)
 --匹配的文本是"test01""test02"n --但'text'"%1",而不是"test01""test02"n local result_text = ""n
如果(text =="test01") thenn result_text = "a"n elseif(text =="test02") thenn result_text = "b"n endn
返回result_textnend

replaced_text = original_text:gsub("$ {(。-)} ", replace_function("%1"))

 - 替换结果为替换 - 但我想要将“替换$ {test01}和$ {test02}”替换为“替换a和b”nprint(replaced_text)

我如何在gsub中使用匹配的字符串?

点赞
用户3574628
用户3574628

问题在于在gsub开始运行之前就调用了replace_functionreplace_function不知道%1的含义,也没有返回任何对gsub有特殊意义的字符串。

然而,来自gsub文档的以下信息告诉我们,您可以直接将replace_function传递给gsub

如果 repl 是一个函数,那么每次匹配出现时都调用此函数,所有捕获的子字符串按顺序作为参数传递。

original_text:gsub ("${(.-)}",replace_function)
2021-07-20 00:25:43