これらは、一致させようとしているファイル拡張子ではなく、MIME タイプです。
一般的な画像形式の 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
モジュールを使用してファイル拡張子またはその逆で MIME タイプを検索します。