Lua中从末尾开始匹配提取URL文件名的技术问题
解决Lua提取URL最后一个斜杠后文件名的问题
你需要的是匹配最后一个斜杠/之后的所有字符,不管文件名有没有后缀。之前用的^.+(%..+)$只针对带后缀的情况,而且捕获的是后缀部分而非整个文件名,自然无法覆盖无后缀的场景。
正确的匹配模式
直接使用[^/]+$即可,这个模式的逻辑很清晰:
[^/]:匹配任意非斜杠的字符+:要求匹配至少一个这样的字符$:锚定到字符串末尾,确保从最后一个位置往前匹配
示例代码
-- 测试用URL列表 local test_urls = { "url://xxxxx/yyyyy/123", "url://xxxxx/yyyyy/123.py", "url://xxxxx/yyyyy/123.dat" } -- 遍历提取文件名 for _, url in ipairs(test_urls) do local filename = url:match("[^/]+$") print(filename) end
输出结果
123 123.py 123.dat
这个方法不管URL前面的结构有多复杂,都能精准提取最后一个斜杠后的完整文件名,完全覆盖你提到的无后缀、带不同后缀的场景。
内容的提问来源于stack exchange,提问作者sweetngx
相关产品推荐
相关产品推荐

