\section{Standard Module \sectcode{fnmatch}}
\stmodindex{fnmatch}

This module provides support for Unix shell-style wildcards, which are
\emph{not} the same as Python's regular expressions (which are
documented in the \code{regex} module).  The special characters used
in shell-style wildcards are:
\begin{itemize}
\item[\code{*}] matches everything
\item[\code{?}]	matches any single character
\item[\code{[}\var{seq}\code{]}] matches any character in \var{seq}
\item[\code{[!}\var{seq}\code{]}] matches any character not in \var{seq}
\end{itemize}

Note that the filename separator (\code{'/'} on Unix) is \emph{not}
special to this module.  See module \code{glob} for pathname expansion
(\code{glob} uses \code{fnmatch} to match filename segments).

\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 comparision is performed.  If you
require a case-sensitive comparision regardless of whether that's
standard for your operating system, use \code{fnmatchcase()} instead.
\end{funcdesc}

\begin{funcdesc}{fnmatchcase}{}
Test whether \var{filename} matches \var{pattern}, returning true or
false; the comparision is case-sensitive.
\end{funcdesc}

\begin{funcdesc}{translate}{pattern}
Translate a shell pattern into a corresponding regular expression,
returning a string describing the pattern.  It does not compile the
expression.  
\end{funcdesc}

