wcmatch - AutoCAD AutoLISP function
wcmatch is an AutoLISP function that performs a
wild-card pattern match on a string.
Syntax: (wcmatch string pattern)
Where the arguments are string an pattern:
A string to be compared. The comparison is case-sensitive, so uppercase and
lowercase characters must match.
A string containing the pattern to match against string. The pattern can
contain the wild-card pattern-matching characters shown in the table
Wild-card characters. You can use commas in a pattern to enter more than one
pattern condition. Only the first 500 characters (approximately) of the
string and pattern are compared; anything beyond that is ignored.
Both arguments can be either a quoted string or a string variable. It is
valid to use variables and values returned from AutoLISP functions for
string and pattern values.
If string and pattern match, wcmatch returns T; otherwise, wcmatch returns
||Matches any single numeric digit.
||Matches any single alphabetic character.
||Matches any single nonalphanumeric character.
||Matches any character sequence, including an empty one, and it
can be used anywhere in the search pattern: at the beginning,
middle, or end.
|? (question mark)
||Matches any single character.
||If it is the first character in the pattern, it matches anything
except the pattern.
||Matches any one of the characters enclosed.
||Matches any single character not enclosed.
||Used inside brackets to specify a range for a single character.
||Separates two patterns.
|` (reverse quote)
||Escapes special characters (reads next character literally).
The following command tests a string to see if it begins with the character N:
Command: (wcmatch "Name" "N*")
The following example performs three comparisons. If
any of the three pattern conditions is met, wcmatch returns T. The tests
Does the string contain three characters?
Does the string not contain an m?
Does the string begin with the letter “N”?
If any of the three pattern conditions is met,
wcmatch returns T:
Command: (wcmatch "Name" "???,~*m*,N*")
In this example, the last condition was met, so
wcmatch returned T.
Using Escape Characters with wcmatch
To test for a wild-card character in a string, you can use the single
reverse-quote character (`) to escape the character. Escape means that the
character following the single reverse quote is not read as a wild-card
character; it is compared at its face value. For example, to search for a
comma anywhere in the string “Name”, enter the following:
Command: (wcmatch "Name" "*`,*")
Both the C and AutoLISP programming languages use the
backslash (\) as an escape character, so you need two backslashes (\\) to
produce one backslash in a string. To test for a backslash character
anywhere in “Name”, use the following function call:
Command: (wcmatch "Name" "*`\\*")
All characters enclosed in brackets ([ . . . ]) are
read literally, so there is no need to escape them, with the following
exceptions: the tilde character (~) is read literally only when it is not
the first bracketed character (as in "[A~BC]"); otherwise, it is read as the
negation character, meaning that wcmatch should match all characters except
those following the tilde (as in "[~ABC]"). The dash character (-) is read
literally only when it is the first or last bracketed character (as in
"[-ABC]" or "[ABC-]") or when it follows a leading tilde (as in "[~-ABC]").
Otherwise, the dash character (-) is used within brackets to specify a range
of values for a specific character. The range works only for single
characters, so "STR[1-38]" matches STR1, STR2, STR3, and STR8, and "[A-Z]"
matches any single uppercase letter.
The closing bracket character (]) is also read literally if it is the first
bracketed character or if it follows a leading tilde (as in "[ ]ABC]" or
Note! Because additional wild-card characters might
be added in future releases of AutoLISP, it is a good idea to escape all
nonalphanumeric characters in your pattern to ensure upward compatibility.
More resources on JTB World