# match-string
A Rust library for simple and flexible string pattern matching.
[](https://crates.io/crates/match-string)
[](https://docs.rs/match-string)
[](LICENSE-MIT)
## Examples
Simple matches using built-in tokens:
```rust
matches!("Hello, World!" => ALPHABETIC, ", ", ALPHABETIC);
matches!("123 456" => NUM, " ", NUM);
matches!("[12, 34, 56]" => "[", NUM[","]+, "]");
matches!("foobarfoofoobar" => ("foo" / "bar")+);
```
Capturing matched values:
```rust
let name: Dest<String> = Dest::new();
let greeting = matches!("Hello, Alice!" => "Hello, ", name@ALPHABETIC, "!");
let arrays: Dest<Vec<usize>> = Dest::new();
let numbers = matches!("[1, 2, 3]" => "[", (arrays@NUM)[","]+, "]");
```
Custom tokens:
```rust
const VOWELS: Token<char, String> = Token {
/* Check each character */
predicate: |ch| "aeiouAEIOU".contains(*ch),
/* Convert Vec<char> to String */
parser: |v| v.into_iter().collect(),
/* Require at least one match */
at_least: 1,
/* Skip leading whitespace */
skip_leading: Some(|ch: &char| ch.is_whitespace()),
};
```