Wild Routines

Overview

The Wild Routines implements basic wildcard matching and the escaping of wildcards within regular strings.

The Wild_EQ() function takes a wildcard spec and a regular string and returns "true" if there is a match. The wildcard characters are specified below.

The Wild_escapeWildcards() function takes a string pointer and returns an MBuf object with any wildcard characters escaped with backslashes. This allows the string or derivations of the string to be used as a wildcard spec without the characters being interpreted as anything other than literal matches.

Wildcard Characters

You may specify the following wildcard characters in the match-spec string:

The character class specifies a list of potential matching (or non-matching) characters between the '[' and the ']'. You can specify a range of characters by separating the start and the end with a '-'. You can specify a non-matching set of characters by starting the list with '^'. If you want to specify ']', '-', '^', or '\' in the set of characters, either precede the character with a backslash, or put the character in a position that it cannot be interpreted as having special meaning. For instance, ']' can be placed first in the list (possibly after a '^') without terminating the list, '-' can be placed either first (possibly after '^') or last in the list without being interpreted as a range, and '^' can appear anywhere but as the very first character without having special meaning.

For example, "[0-9]" matches all digits, "[A-Za-z0-9_-]" matches all alphanumeric characters plus dash and underscore, and "[^A-Z]" matches anything that is not an upper-case letter.

My version of the wild-card code has been enhanced to provide several backslash shortcuts (that will be familiar to perl regex users):

\s
Any space character (like specifying [\t ]).
\S
Any non-space character (like specifying [^\t ]).
\d
Any digit (like specifying [0-9]).
\D
Any non-digit (like specifying [^0-9]).
\w
Any word character (often the same as [A-Za-z0-9_]).
\W
Any non-word character (often the same as [^A-Za-z0-9_]).
\n
A newline character.
\r
A carriage-return character.
\t
A tab character.
\e
An escape character.
\f
A form-feed character.
\a
An audible bell character.
\b
A backspace character.

Note that you can specify these values both outside and inside a character class.