3 releases (breaking)
0.2.0 | Jul 9, 2024 |
---|---|
0.1.0 | Jul 3, 2024 |
0.0.0-pre | May 24, 2024 |
#107 in Text processing
19,314 downloads per month
54KB
1K
SLoC
wildcard
wildcard
is a rust crate for wildcard matching.
Here's how to use it:
let wildcard = Wildcard::new("*foo?*bar".as_bytes()).unwrap();
assert!(wildcard.is_match("fooofooobar".as_bytes()));
Special characters can be escaped to represent their literal symbol:
let wildcard = Wildcard::new(r"\*\?".as_bytes()).unwrap();
assert!(!wildcard.is_match("ab".as_bytes()));
assert!(wildcard.is_match("*?".as_bytes()));
You can also capture the substring that matched the metasymbols of the wildcard:
let wildcard = Wildcard::new("* is a * style?".as_bytes()).unwrap();
let captures: Vec<&[u8]> = wildcard.captures("Lambic is a beer style!".as_bytes()).unwrap();
assert_eq!(captures, ["Lambic".as_bytes(), "beer".as_bytes(), "!".as_bytes()]);
Matching customization
With wildcard
you can configure these properties of a wildcard:
- Configure the symbols for the metasymbols
*
and?
as well as the escape symbol. - Support for the metasymbol
?
can be disabled. - Support for escaping can be disabled.
- Support for case-insensitive matching.
Dependencies
~245–700KB
~16K SLoC