\section{\module{fnmatch} --- \UNIX{} filename pattern matching} \declaremodule{standard}{fnmatch} \modulesynopsis{\UNIX\ shell style filename pattern matching.} \index{filenames!wildcard expansion} This module provides support for \UNIX{} shell-style wildcards, which are \emph{not} the same as regular expressions (which are documented in the \refmodule{re}\refstmodindex{re} module). The special characters used in shell-style wildcards are: \begin{tableii}{c|l}{code}{Pattern}{Meaning} \lineii{*}{matches everything} \lineii{?}{matches any single character} \lineii{[\var{seq}]}{matches any character in \var{seq}} \lineii{[!\var{seq}]}{matches any character not in \var{seq}} \end{tableii} Note that the filename separator (\code{'/'} on \UNIX{}) is \emph{not} special to this module. See module \refmodule{glob}\refstmodindex{glob} for pathname expansion (\refmodule{glob} uses \function{fnmatch()} to match pathname segments). Similarly, filenames starting with a period are not special for this module, and are matched by the \code{*} and \code{?} patterns. \begin{funcdesc}{fnmatch}{filename, pattern} Test whether the \var{filename} string matches the \var{pattern} string, returning true or false. If the operating system is case-insensitive, then both parameters will be normalized to all lower- or upper-case before the comparison is performed. If you require a case-sensitive comparison regardless of whether that's standard for your operating system, use \function{fnmatchcase()} instead. \end{funcdesc} \begin{funcdesc}{fnmatchcase}{filename, pattern} Test whether \var{filename} matches \var{pattern}, returning true or false; the comparison is case-sensitive. \end{funcdesc} \begin{funcdesc}{filter}{names, pattern} Return the subset of the list of \var{names} that match \var{pattern}. It is the same as \code{[n for n in names if fnmatch(n, pattern)]}, but implemented more efficiently. \end{funcdesc} \begin{seealso} \seemodule{glob}{\UNIX{} shell-style path expansion.} \end{seealso}