Pattern Matching
We use a subset of the regular expression syntax for pattern matching.
A valid mask consists of literal characters, sets, and wildcards.
Each literal character must match a single character in the string.
Expression |
Description |
* |
Matches any number of characters |
? |
Matches a single arbitrary character |
[<char set>] |
Matches character from <char set>* |
[^<char set>] |
Matches character not in <char set>* |
Special characters
To match an open bracket ([) the character must always be escaped with a backslash (\) like this \[
What is a set?
Each set begins with an opening bracket ([) and ends with a closing bracket (]). Between the brackets are the elements of the set. Each element is a literal character or a range. Ranges are specified by an initial value, a dash (-), and a final value. Do not use spaces or commas to separate the elements of the set. A set must match a single character in the string. The character matches the set if it is the same as one of the literal characters in the set, or if it is in one of the ranges in the set. A character is in a range if it matches the initial value, the final value, or falls between the two values. All comparisons are case-insensitive. If the first character after the opening bracket of a set is a caret (^), then the set matches any character that is not in the set.
To match a backslash (\), dash (-), open bracket ([), close bracket (]), question mark (?), or asterisk (*) the character must be escaped with backslash (\)
Examples
Pattern |
Filename |
Match |
[a-z0-9_]bc?*c |
abcabc |
True |
hello* |
hello world |
True |
*world |
hello world |
True |
*world |
world hello |
False |
?ello world |
jello world |
True |
?ello world |
hello world |
True |
?ello world |
jhello world |
False |