Glob
Globbing pathnames.
Globbing pathnames.
Wildcard pattern matcher implementing the same rules as https://www.man7.org/linux/man-pages/man7/glob.7.html
Note that wildcard patterns are not regular expressions, although they are a bit similar. First of all, they match filenames, rather than text, and secondly, the conventions are not the same: for example, in a regular expression '*' means zero or more copies of the preceding thing.
Pattern syntax:
A string is a wildcard pattern if it contains one of the characters '?', '*' or '['. Globbing is the operation that expands a wildcard pattern into the list of pathnames matching the pattern. Matching is defined by:
A '?' (not between brackets) matches any single character.
A '*' (not between brackets) matches any string, including the empty string.
A '/' in a pathname cannot be matched by a '?' or '*' wildcard, or by a range like "[.-0]". A range containing an explicit '/' character is syntactically incorrect.
An expression "[...]" where the first character after the leading '[' is not an '!' matches a single character, namely any of the characters enclosed by the brackets. The string enclosed by the brackets cannot be empty; therefore ']' can be allowed between the brackets, provided that it is the first character. (Thus, "[][!]" matches the three characters '[', ']' and '!'.)
There is one special convention: two characters separated by '-' denote a range. (Thus, "[A-Fa-f0-9]" is equivalent to "[ABCDEFabcdef0123456789]".) One may include '-' in its literal meaning by making it the first or last character between the brackets. (Thus, "[]-]" matches just the two characters ']' and '-', and "[--0]" matches the three characters '-', '.', '0', since '/' cannot be matched.)
Now that regular expressions have bracket expressions where the negation is indicated by a '^', POSIX has declared the effect of a wildcard pattern "[^...]" to be undefined.
An expression "[!...]" matches a single character, namely any character that is not matched by the expression obtained by removing the first '!' from it. (Thus, "[!]a-]" matches any single character except ']', 'a' and '-'.)
One can remove the special meaning of '?', '' and '[' by preceding them by a backslash, or, in case this is part of a shell command line, enclosing them in quotes. Between brackets these characters stand for themselves. Thus, "[[?]" matches the four characters '[', '?', '*' and ''.
Type members
Classlikes
A wildcard pattern matching any single character except path separator '/' character.
A wildcard pattern matching any single character except path separator '/' character.
A wildcard pattern matching anything but path separator '/' character.
A wildcard pattern matching anything but path separator '/' character.
A wildcard pattern matching anything, inluding path separator.
A wildcard pattern matching anything, inluding path separator.
A wildcard pattern matching either class or range of characters.
A wildcard pattern matching either class or range of characters.
Character check defined between brackets, either class or range.
Character check defined between brackets, either class or range.
- Companion
- object
Support for character classes and ranges.
Support for character classes and ranges.
- Companion
- class
Checks if the character is of any of the provided characters.
Checks if the character is of any of the provided characters.
The string cannot be empty; therefore ']' can be allowed, provided that it is the first character. (Thus, "][!" matches the three characters '[', ']' and '!'.)
Checks if the character is between provided range.
Checks if the character is between provided range.
There is one special convention: two characters separated by '-' denote a range. (Thus, "[A-Fa-f0-9]" is equivalent to "[ABCDEFabcdef0123456789]".) One may include '-' in its literal meaning by making it the first or last character between the brackets. (Thus, "[]-]" matches just the two characters ']' and '-', and "[--0]" matches the three characters '-', '.', '0', since '/' cannot be matched.)
Composite check nesting a sequence of positive checks.
Composite check nesting a sequence of positive checks.
A pattern consisting of a sequence of nested patterns.
A pattern consisting of a sequence of nested patterns.
A pattern matching literally, without any wildcards.
A pattern matching literally, without any wildcards.
An engine that performs match operations on a character sequence by interpreting a Pattern.
An engine that performs match operations on a character sequence by interpreting a Pattern.
- Companion
- object
Composite check nesting a sequence of negative checks.
Composite check nesting a sequence of negative checks.
A compiled representation of a glob pattern.
A compiled representation of a glob pattern.