Copyright (C) 2000-2012 |
GNU Info (libc.info)Wildcard MatchingWildcard 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'. - Function: int fnmatch (const char *PATTERN, const char *STRING, int FLAGS) This function tests whether the string STRING matches the pattern PATTERN. It returns `0' if they do match; otherwise, it returns the nonzero value `FNM_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 of `fnmatch' might sometimes report "errors". They would do so by returning nonzero values that are not equal to `FNM_NOMATCH'. These are the available flags for the FLAGS argument: `FNM_FILE_NAME' Treat the `/' character specially, for matching file names. If this flag is set, wildcard constructs in PATTERN cannot match `/' in STRING. Thus, the only way to match `/' is with an explicit `/' in PATTERN. `FNM_PATHNAME' This is an alias for `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' Treat the `.' character specially if it appears at the beginning of STRING. If this flag is set, wildcard constructs in PATTERN cannot match `.' as the first character of STRING. 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' Don't treat the `\' character specially in patterns. Normally, `\' quotes the following character, turning off its special meaning (if any) so that it matches only itself. When quoting is enabled, the pattern `\?' matches only the string `?', because the question mark in the pattern acts like an ordinary character. If you use `FNM_NOESCAPE', then `\' is an ordinary character. `FNM_LEADING_DIR' Ignore a trailing sequence of characters starting with a `/' in STRING; that is to say, test whether STRING starts with a directory name that PATTERN matches. If this flag is set, either `foo*' or `foobar' as a pattern would match the string `foobar/frobozz'. `FNM_CASEFOLD' Ignore case in comparing STRING to PATTERN. `FNM_EXTMATCH' Recognize beside the normal patterns also the extended patterns introduced in `ksh'. The patterns are written in the form explained in the following table where PATTERN-LIST is a `|' separated list of patterns. `?(PATTERN-LIST)' The pattern matches if zero or one occurrences of any of the patterns in the PATTERN-LIST allow matching the input string. `*(PATTERN-LIST)' The pattern matches if zero or more occurrences of any of the patterns in the PATTERN-LIST allow matching the input string. `+(PATTERN-LIST)' The pattern matches if one or more occurrences of any of the patterns in the PATTERN-LIST allow matching the input string. `@(PATTERN-LIST)' The pattern matches if exactly one occurrence of any of the patterns in the PATTERN-LIST allows matching the input string. `!(PATTERN-LIST)' The pattern matches if the input string cannot be matched with any of the patterns in the PATTERN-LIST. automatically generated by info2www version 1.2.2.9 |