LLVM: llvm::GlobPattern Class Reference (original) (raw)
This class implements a glob pattern matcher similar to the one found in bash, but with some key differences. More...
This class implements a glob pattern matcher similar to the one found in bash, but with some key differences.
Namely, that * matches all characters and does not exclude path separators.
- ? matches a single character.
- * matches zero or more characters.
- [] matches one character in the bracket. Character ranges, e.g., [a-z], and negative sets via [^ab] or [!ab] are also supported.
- {,...} matches one of the globs in the list. Nested brace expansions are not supported. If
MaxSubPatternsis empty then brace expansions are not supported and characters {,} are treated as literals. - \ escapes the next character so it is treated as a literal.
Some known edge cases are:
- The literal ] is allowed as the first character in a character class, i.e., []] is valid and matches the literal ].
- The empty character class, i.e., [], is invalid.
- Empty or singleton brace expansions, e.g., {}, {a}, are invalid.
- The literals } and , that are not inside a brace expansion are taken as literals, e.g., ,} is valid but { is not.
Examples:
- *[/\\]foo.{c,cpp} will match (unix or windows) paths to files named foo.c or foo.cpp.
- _Z{N,NK,}S[tabsoid]* will match mangled C++ standard library functions.
Definition at line 52 of file GlobPattern.h.