这些不是您要匹配的文件扩展名,而是MIME types。
常见图像格式的 MIME 类型恰好非常简单,例如:
image/png
image/jpeg
image/gif
但大多数其他类型不是,而是使用如下 MIME 类型:
.pdf application/pdf
.doc application/msword
.xls application/vnd.ms-excel
.rar application/x-rar-compressed
.7z application/x-7z-compressed
.zip application/zip
.xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
.xltx application/vnd.openxmlformats-officedocument.spreadsheetml.template
.potx application/vnd.openxmlformats-officedocument.presentationml.template
.ppsx application/vnd.openxmlformats-officedocument.presentationml.slideshow
.pptx application/vnd.openxmlformats-officedocument.presentationml.presentation
.sldx application/vnd.openxmlformats-officedocument.presentationml.slide
.docx application/vnd.openxmlformats-officedocument.wordprocessingml.document
.dotx application/vnd.openxmlformats-officedocument.wordprocessingml.template
注意:这些只是相应文件格式最常用的 MIME 类型。IANA 是注册 MIME 类型的官方机构,但在野外,您会遇到许多不同的变体,具体取决于使用它们的程序(邮件客户端、浏览器、Web 服务器……)。
所以你不应该通过使用正则表达式来匹配它们,而是维护一个允许的 MIME 类型的注册表(可以是一个简单的 Python 列表,或者如果你想真正确定并考虑变体,可以是一个字典)。
阅读MIME 类型,检查IANA MIME 媒体类型列表作为已注册 MIME 类型的权威来源,并使用 Pythonmimetypes
模块按文件扩展名查找 mimetypes,反之亦然。