为什么这个lua gsub不起作用?

为什么这个lua gsub不起作用?,lua,Lua,我有一些lua代码,它是RESTAPI的一部分。我正在扩展它来处理重定向。 然而,我在gsub上遇到了麻烦 msg=POST /v2/keys/message?recursive=true&value=hello%20world HTTP/1.1 Host: 172.17.8.101:4001 Content-Length: 0 Accept: */*, application/json, application/x-www-form-urlencoded, text/plain 我想

我有一些lua代码,它是RESTAPI的一部分。我正在扩展它来处理重定向。 然而,我在gsub上遇到了麻烦

msg=POST /v2/keys/message?recursive=true&value=hello%20world HTTP/1.1
Host: 172.17.8.101:4001
Content-Length: 0
Accept: */*, application/json, application/x-www-form-urlencoded, text/plain
我想换一个

path = "blabla"
msg = msg:gsub("^%w* ([^\r\n]*)\r\n.*", path .. " HTTP/1.1")
结果是:

msg=POST blabla HTTP/1.1
Host: 172.17.8.101:4001
Content-Length: 0
Accept: */*, application/json, application/x-www-form-urlencoded, text/plain

但我试过的所有东西都不匹配,也没有替换。我想我只是从根本上误解了LuaGSub及其模式匹配的工作原理。gsub有什么问题吗?

对于初学者来说,您的匹配度过高

您不需要将整个字符串与模式匹配。只需修改要修改的位

msg=是字符串的一部分还是变量赋值?我将假设这是一个变量赋值,特别是给定msg=msg:gsub

鉴于这一尝试:

msg = msg:gsub("^(%w*%s*)([^%s]*)", "%1"..path)

首先,你是过度匹配

您不需要将整个字符串与模式匹配。只需修改要修改的位

msg=是字符串的一部分还是变量赋值?我将假设这是一个变量赋值,特别是给定msg=msg:gsub

鉴于这一尝试:

msg = msg:gsub("^(%w*%s*)([^%s]*)", "%1"..path)

请尝试下面的代码。注意使用1只进行一次匹配

msg=msg:gsub%s+%s+%s+,%1..path..%3,1


请尝试下面的代码。注意使用1只进行一次匹配

msg=msg:gsub%s+%s+%s+,%1..path..%3,1


您确定字符串中有\r\n换行符吗?是的,这是从服务器返回的内容。HTTP响应是否确定字符串中有\r\n换行符?是的,这是从服务器返回的内容。HTTP响应