pub struct Pattern { /* private fields */ }
Expand description
A compiled Unix shell style pattern.
-
?
matches any single character. -
*
matches any (possibly empty) sequence of characters. -
**
matches the current directory and arbitrary subdirectories. This sequence must form a single path component, so both**a
andb**
are invalid and will result in an error. A sequence of more than two consecutive*
characters is also invalid. -
[...]
matches any character inside the brackets. Character sequences can also specify ranges of characters, as ordered by Unicode, so e.g.[0-9]
specifies any character between 0 and 9 inclusive. An unclosed bracket is invalid. -
[!...]
is the negation of[...]
, i.e. it matches any characters not in the brackets. -
The metacharacters
?
,*
,[
,]
can be matched by using brackets (e.g.[?]
). When a]
occurs immediately following[
or[!
then it is interpreted as being part of, rather then ending, the character set, so]
and NOT]
can be matched by[]]
and[!]]
respectively. The-
character can be specified inside a character sequence pattern by placing it at the start or the end, e.g.[abc-]
.
Implementations§
Source§impl Pattern
impl Pattern
Sourcepub fn new(pattern: &str) -> Result<Pattern, PatternError>
pub fn new(pattern: &str) -> Result<Pattern, PatternError>
This function compiles Unix shell style patterns.
An invalid glob pattern will yield a PatternError
.
Sourcepub fn escape(s: &str) -> String
pub fn escape(s: &str) -> String
Escape metacharacters within the given string by surrounding them in
brackets. The resulting string will, when compiled into a Pattern
,
match the input string and nothing else.
Sourcepub fn matches(&self, str: &str) -> bool
pub fn matches(&self, str: &str) -> bool
Return if the given str
matches this Pattern
using the default
match options (i.e. MatchOptions::new()
).
§Examples
use capturing_glob::Pattern;
assert!(Pattern::new("c?t").unwrap().matches("cat"));
assert!(Pattern::new("k[!e]tteh").unwrap().matches("kitteh"));
assert!(Pattern::new("d*g").unwrap().matches("doog"));
Sourcepub fn matches_path(&self, path: &Path) -> bool
pub fn matches_path(&self, path: &Path) -> bool
Return if the given Path
, when converted to a str
, matches this
Pattern
using the default match options (i.e. MatchOptions::new()
).
Sourcepub fn matches_with(&self, str: &str, options: &MatchOptions) -> bool
pub fn matches_with(&self, str: &str, options: &MatchOptions) -> bool
Return if the given str
matches this Pattern
using the specified
match options.
Sourcepub fn matches_path_with(&self, path: &Path, options: &MatchOptions) -> bool
pub fn matches_path_with(&self, path: &Path, options: &MatchOptions) -> bool
Return if the given Path
, when converted to a str
, matches this
Pattern
using the specified match options.
Sourcepub fn captures(&self, str: &str) -> Option<Entry>
pub fn captures(&self, str: &str) -> Option<Entry>
Return entry if filename matches pattern
Then you can extract capture groups from entry
§Examples
use capturing_glob::Pattern;
assert_eq!(Pattern::new("(*).txt").unwrap()
.captures("some.txt").unwrap()
.group(1).unwrap(),
"some");
Sourcepub fn captures_path(&self, path: &Path) -> Option<Entry>
pub fn captures_path(&self, path: &Path) -> Option<Entry>
Return an entry if filename converted to str matches pattern
Sourcepub fn captures_path_with(
&self,
path: &Path,
options: &MatchOptions,
) -> Option<Entry>
pub fn captures_path_with( &self, path: &Path, options: &MatchOptions, ) -> Option<Entry>
Return an entry if filename converted to str matches pattern
Sourcepub fn captures_with(&self, str: &str, options: &MatchOptions) -> Option<Entry>
pub fn captures_with(&self, str: &str, options: &MatchOptions) -> Option<Entry>
Return entry if filename matches pattern
Sourcepub fn substitute(
&self,
capture_groups: &[&str],
) -> Result<String, SubstitutionError>
pub fn substitute( &self, capture_groups: &[&str], ) -> Result<String, SubstitutionError>
Substitute values back into patterns replacing capture groups
use capturing_glob::Pattern;
assert_eq!(Pattern::new("images/(*).jpg")?.substitute(&["cat"])?,
"images/cat.jpg");
Note: we check neither result so it matches pattern.