wildcard

Crates.iowildcard
lib.rswildcard
version0.2.0
sourcesrc
created_at2024-05-24 09:51:10.320511
updated_at2024-07-09 09:56:27.167268
descriptionWildcard matching
homepagehttps://github.com/cloudflare/wildcard
repositoryhttps://github.com/cloudflare/wildcard
max_upload_size
id1250866
size94,689
rust-crate-owners (github:cloudflare:rust-crate-owners)

documentation

https://docs.rs/wildcard

README

Build Status Dependency status crates.io Downloads Github stars Documentation License

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:

  1. Configure the symbols for the metasymbols * and ? as well as the escape symbol.
  2. Support for the metasymbol ? can be disabled.
  3. Support for escaping can be disabled.
  4. Support for case-insensitive matching.
Commit count: 7

cargo fmt