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
0if 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,
fnmatchcannot experience an “error”—it always returns an answer for whether the match succeeds. However, other implementations offnmatchmight 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_NAMEFNM_PATHNAMEFNM_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_PERIODIf 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_NOESCAPEIf you use FNM_NOESCAPE, then `\' is an ordinary character.
FNM_LEADING_DIRIf this flag is set, either `foo*' or `foobar' as a pattern
would match the string `foobar/frobozz'.
FNM_CASEFOLDFNM_EXTMATCH|
separated list of patterns.
?(pattern-list)*(pattern-list)+(pattern-list)@(pattern-list)!(pattern-list)