Next: Globbing, Up: Pattern Matching
This section describes how to match a wildcard pattern against a particular string. The result is a yes or no answer: does the string fit the pattern or not. The symbols described here are all declared in fnmatch.h.
This function tests whether the string string matches the pattern pattern. It returns
0
if they do match; otherwise, it returns the nonzero valueFNM_NOMATCH
. The arguments pattern and string are both strings.The argument flags is a combination of flag bits that alter the details of matching. See below for a list of the defined flags.
In the GNU C Library,
fnmatch
cannot experience an “error”—it always returns an answer for whether the match succeeds. However, other implementations offnmatch
might sometimes report “errors”. They would do so by returning nonzero values that are not equal toFNM_NOMATCH
.
These are the available flags for the flags argument:
FNM_FILE_NAME
FNM_PATHNAME
FNM_FILE_NAME
; it comes from POSIX.2. We
don't recommend this name because we don't use the term “pathname” for
file names.
FNM_PERIOD
If you set both FNM_PERIOD
and FNM_FILE_NAME
, then the
special treatment applies to `.' following `/' as well as to
`.' at the beginning of string. (The shell uses the
FNM_PERIOD
and FNM_FILE_NAME
flags together for matching
file names.)
FNM_NOESCAPE
If you use FNM_NOESCAPE
, then `\' is an ordinary character.
FNM_LEADING_DIR
If this flag is set, either `foo*' or `foobar' as a pattern
would match the string `foobar/frobozz'.
FNM_CASEFOLD
FNM_EXTMATCH
|
separated list of patterns.
?(
pattern-list)
*(
pattern-list)
+(
pattern-list)
@(
pattern-list)
!(
pattern-list)