Lua 删除请求 URI 中的文件路径中的文件夹

我有这样的 URL:

/path1/path2/path3/path4/path5/96_6.txt
/path1/path2/path3/path4/path5/96_7.txt?blah=1

到目前为止,我正在执行以下操作以获取我的 URL 结尾处的文件:

local request_uri = "/path1/path2/path3/path4/path5/96_645.txt?lol=1"
local name = request_uri:match( "([^/]+)$" )
local filename = string.gsub(name, "?.*", "")

print(name)
print(filename)

输出为:

96_645.txt?lol=1
96_645.txt

我想要做的是从我的 URL 中移除 path2path3。问题是它们是动态文件夹路径并且可能包含字符。

这个问题的最佳解决方案是什么?

原文链接 https://stackoverflow.com/questions/69055766

点赞
stackoverflow用户8541499
stackoverflow用户8541499

尝试这个:

function fix_url(p)
  p, _ = string.gsub(p, '^/([^/]+)/[^/]+/[^/]+/(.*)', '/%1/%2')
  return p
end

下面是一些测试:

p = fix_url('/path1/path2/path3/path4/path5/96_6.txt')
assert(p == '/path1/path4/path5/96_6.txt')
p = fix_url('/path1/path2/path3/path4/path5/96_7.txt?blah=1')
assert(p == '/path1/path4/path5/96_7.txt?blah=1')
p = fix_url('/path1/foo.txt')
assert(p == '/path1/foo.txt')
2021-09-04 13:59:32