\section{Standard Module \sectcode{fnmatch}}
\label{module-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).

\renewcommand{\indexsubitem}{(in module fnmatch)}

\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}

