Previous Topic | Table of Contents | Next Topic

Wildcarding and Pattern Matching



Characters
Meaning
? Match any single character, including "." but not "\" or "/".
* Match any number of characters, including "." but not "\" or "/".
[a-z] An example range: match any character a through z.
[^a-z] An example exclusion range: match any character not in the set a through z.
{a,b}c Alternation: generate both ac and bc.
... Indefinite Directory: match any number of directory levels -- zero or more -- whatever it takes to make the rest of the pattern match.


Patterns are used both for traditional filename wildcarding in word mode and for examining strings in expression mode. Patterns are nestable arbitrarily and a recursive comparison algorithm is used to guarantee a sensible result no matter how complex the pattern. For example: *r* or even *\[a-c]*.[ch] operate sensibly. Even drive letters can be wildcarded, e.g., *:winnt*.

Filename wildcards can be used wherever a word is expected and will match any filename except "." and ".." unless it's marked "hidden." (To allow wildcarding to match hidden files, set nonohidden = 1.) Quoting the word prvents wildcarding. Since filenames are not case sensitive, filename wildcarding isn't either.

A pattern can also be used to examine a string in a switch statement or with the "=~" (pattern matches) and "!~" (pattern fails) expression operators. In this context, the pattern must be inside quotes, since otherwise it would be parsed as an expression, with "*" being viewed as the multiply operator, etc. When examining a string with a pattern that uses alternation, the pattern "matches" if any of the alternatives matches. When matching strings, case does matter.

When using a pattern to examine a string with "=~" or "!~" or with a switch, the string being tested is the left operand and the pattern is on the right.



Previous Topic | Table of Contents | Next Topic

Copyright © 1988-2003 by Hamilton Laboratories. All rights reserved.