Die Funktion fnmatch() führt Mustervergleiche für einzelne und mehrere Zeichen durch, wie in „XCU Patterns Matching a Single Character" und „XCU Patterns Matching Multiple Characters" beschrieben. Sie überprüft die durch das Zeichenfolgenargument string angegebene Zeichenfolge, um festzustellen, ob sie mit dem durch das Musterargument pattern angegebenen Muster übereinstimmt. Das Argument flags ändert die Interpretation von pattern and string. Es ist ein bitweises inklusives ODER von keinem oder mehreren der folgenden Flags, die im Header regex.h definiert werden. FNM_NOESCAPE
| Deaktivierung des Entwertungszeichens '\'. | FNM_PATHNAME
| '/' in der Zeichenfolge stimmt nur mit '/' im Muster überein. | FNM_PERIOD
| Führender Punkt ('.') in der Zeichenfolge muss exakt mit einem Punkt im Muster überinstimmen. | Erweiterung | FNM_RANGEOK
| [m-n-r] stimmt mit dem Bereich m-r überein. | FNM_RANGE_ERR
| [m-n-r] gibt einen Fehler zurück. | FNM_CLRANGE_ERR
| [[=m=]-r] verursacht einen Fehler; andernfalls ist '-' ein normales Zeichen (Ende) |
Wenn FNM_PATHNAME in flags gesetzt ist, stimmt das Zeichen '/' in string nur mit einem oder mehreren explizit angegebenen '/' in pattern überein. Es stimmt weder mit dem Sonderzeichen '*' noch mit dem Sonderzeichen '?' noch mit einem geklammerten Ausdruck überein. Wenn ein '/'-Zeichen nach einem nicht entwerteten '['-Zeichen aber vor dem entsprechenden ']'-Zeichen gefunden wird, wird '[' als normales Zeichen behandelt. Beispielsweise stimmt das Muster "a[b/c]d" nicht mit Zeichenketten wie "abd" oder "a/d" überein. Es entspricht nur der Zeichenkette "a[b/c]d". Wenn FNM_PATHNAME in flags nicht gesetzt ist, wird '/' wie ein normales Zeichen behandelt. Wenn FNM_NOESCAPE in flags nicht gesetzt ist, stimmt das Zeichen '\' gefolgt von irgendeinem weiteren Zeichen in pattern mit diesem zweiten Zeichen in string überein. Insbesondere stimmt "\\" in pattern mit '\' in string überein. Wenn pattern mit einem nicht entwerteten '\' endet, gibt fnmatch() FNM_BADPAT zurück. Wenn FNM_NOESCAPE in flags gesetzt ist, wird '\' wie ein normales Zeichen behandelt. Wenn FNM_PERIOD in flags gesetzt ist, stimmt ein führendes '.'-Zeichen in string nur mit einem explizit angegebenen führenden '.' in pattern überein. Es stimmt weder mit dem Sonderzeichen '*' noch mit dem Sonderzeichen '?' noch mit einem geklammerten Ausdruck überein. Die Position von "führend" wird durch den Wert von FNM_PATHNAME bestimmt: The location of "leading" is indicated by the value of FNM_PATHNAME : Wenn FNM_PATHNAME gesetzt ist, ist ein '.'-Zeichen "führend", wenn es das erste Zeichen in string bzw. pattern ist, oder wenn es direkt auf ein '/'-Zeichen folgt. Wenn FNM_PATHNAME nicht gesetzt ist, ist ein '.'-Zeichen nur dann "führend", wenn es das erste Zeichen in string bzw. pattern ist.
Wenn FNM_PERIOD gesetzt ist, gelten für den Vergleich eines '.'-Zeichens keine Einschränkungen. |