"fnmatch" --- Unix のファイル名パターンマッチ
*********************************************

**ソースコード:** Lib/fnmatch.py

======================================================================

このモジュールは Unix のシェル形式のワイルドカードに対応しています。こ
れらは、 ("re" モジュールでドキュメント化されている) 正規表現とは *異
なります* 。シェル形式のワイルドカードで使われる特殊文字は、次のとおり
です。

+--------------+--------------------------------------+
| Pattern      | 意味                                 |
|==============|======================================|
| "*"          | すべてにマッチします                 |
+--------------+--------------------------------------+
| "?"          | 任意の一文字にマッチします           |
+--------------+--------------------------------------+
| "[seq]"      | *seq* にある任意の文字にマッチします |
+--------------+--------------------------------------+
| "[!seq]"     | *seq* にない任意の文字にマッチします |
+--------------+--------------------------------------+

リテラルにマッチさせるには、メタ文字を括弧に入れてください。例えば、
"'[?]'" は文字 "'?'" にマッチします。

ファイル名の区切り文字 (Unix では "'/'") は、このモジュールでは特別扱
い *されません*。 パス名の展開については "glob" モジュールを参照してく
ださい ("glob" はパス名の各部分の照合に "filter()" を使います)。 同様
に、ピリオドで始まるファイル名も特別扱いされず、"*" や "?" のパターン
にマッチします。

特に断りがなければ、「ファイル名文字列」と「パターン文字列」は "str"
または "ISO-8859-1" でエンコードされた "bytes" オブジェクトを指します
。 以下の関数では、"bytes" のパターンと "str" のファイル名を混在させる
ことはできず、その逆も同様です。

なお、"fnmatch()"、"fnmatchcase()"、"filter()"、"filterfalse()" では、
*maxsize* が 32768 の "@functools.lru_cache" を使い、コンパイル済みの
正規表現パターンを型別にキャッシュしています。

fnmatch.fnmatch(name, pat)

   ファイルの文字列 *name* がパターン文字列 *pat* にマッチするかテスト
   して、 "True" または "False" のいずれかを返します。どちらの引数とも
   "os.path.normcase()" を使って、大文字、小文字が正規化されます。オペ
   レーティングシステムが標準でどうなっているかに関係なく、大文字、小
   文字を区別して比較する場合には、 "fnmatchcase()" が使用できます。

   次の例では、カレントディレクトリにある、拡張子が ".txt" である全て
   のファイルを表示しています:

      import fnmatch
      import os

      for file in os.listdir('.'):
          if fnmatch.fnmatch(file, '*.txt'):
              print(file)

fnmatch.fnmatchcase(name, pat)

   ファイル名の文字列 *name* がパターン文字列 *pat* にマッチするかテス
   トして、 "True" または "False" を返します。比較は大文字、小文字を区
   別し、 "os.path.normcase()" は適用しません。

fnmatch.filter(names, pat)

   ファイル名文字列の *イテラブル* *names* のうち、パターン文字列
   *pat* にマッチする要素からリストを作成します。 "[n for n in names
   if fnmatch(n, pat)]" と同じですが、より効率的に実装されています。

fnmatch.filterfalse(names, pat)

   ファイル名文字列の *イテラブル* *names* のうち、パターン文字列
   *pat* にマッチしない要素からリストを作成します。 "[n for n in names
   if not fnmatch(n, pat)]" と同じですが、より効率的に実装されています
   。

   Added in version 3.14.

fnmatch.translate(pat)

   シェル形式のパターン *pat* を "re.prefixmatch()" で使う正規表現に変
   換して返します。 パターンは "str" でなければなりません。

   例:

   >>> import fnmatch, re
   >>>
   >>> regex = fnmatch.translate('*.txt')
   >>> regex
   '(?s:.*\\.txt)\\z'
   >>> reobj = re.compile(regex)
   >>> reobj.prefixmatch('foobar.txt')
   <re.Match object; span=(0, 10), match='foobar.txt'>

参考:

  "glob" モジュール
     Unix シェル形式のパス展開。
