lua获取文件扩展名的第一个出现

所以我有一个类似的url

https://example.com/path/to/file/file.mp4/file.jpg

我只想匹配提供的第一个文件扩展名,而不是其他人插入URL中的任何其他文件扩展名。

举个例子:

function GetFileExtension(url)
return url:match'^ .+(\ .. + )$'end 

local url = "https://example.com/path/to/file/file.mp4/file.jpg" 
print(GetFileExtension(url)) 

输出:

.jpg

输出应该是.mp4,因为那是文件的内容,URL中第一次出现后的所有内容都被忽略。

有什么好的方法来解决这个问题。谢谢任何能帮助我回答我的问题的人。

点赞
用户107090
用户107090

尝试使用 url:match("//.-/.+(%..*)$"))

该模式在找到 // 后找到第一个 /,从而跳过主机部分。然后它找到最后一个 .​ 并捕获它以及任何扩展名。

2018-11-15 08:59:20
用户12968803
用户12968803
filename = "https://example.com/path/to/file/file.mp4/file.jpg"
--ext = filename:match("^.+(%..+)$")  -- ".jpg"
--ext = filename:match("^.+%.(.+)$")  -- "jpg"
--ext = filename:match("^.+(%..+)%/") -- ".mp4"
  ext = filename:match("^.+%.(.+)%/") -- "mp4"

print (ext)
将上述代码解释一下:

1. "^"表示匹配起始位置。
2. "+"表示匹配前面的字符至少出现一次。
3. "(%..+)"表示一个点及其后面至少一个字符的字符串,括号表示这是一个捕获。
4. "$"表示匹配结束位置。
5. ".+"表示至少一个任意字符。
6. "%.+""%"表示转义,匹配点号。
7. "%/"表示匹配斜杠字符。
8. "match"函数在字符串中找到符合模式的部分。

因此,以上代码的输出结果为:"mp4"
2022-04-22 15:53:15