Expand description
Generalized regex like pattern match for vector.
use vec_reg::{Regex, CompiledRegex, vec_reg};
let is_fizz = |x: &i32| x % 3 == 0;
let is_buzz = |x: &i32| x % 5 == 0;
let reg = vec_reg!([is_fizz]([is_buzz][|x| x % 15 == 0])+).compile();
assert!(!reg.is_match(&vec![1, 2, 3]));
assert!(reg.is_match(&vec![3, 5, 15]));
assert!(reg.is_match(&vec![6, 10, 15, 10, 30]));
Supported Syntax
Syntax | Description |
---|---|
[function_name] | Match any values that satisfied given function. |
[|x| *x == 1] | Match any values that satisfied given closure. |
[^function_name] | Match any values that not satisfied given function. |
[^|x| *x == 1] | Match any values that not satisfied given closure. |
. | Match any values. |
^ | a beginning of input |
$ | a end of input |
(R) | numbered capturing group (submatch) |
(?:R) | non-capturing group |
(?P<"name">R) | named & numbered capturing group (submatch) |
RS | R followed by S |
R|S | R or S (prefer R ) |
R? | zero or one R , prefer one |
R?? | zero or one R , prefer zero |
R* | zero or more R , prefer more |
R*? | zero or more R , prefer fewer |
R+ | one or more R , prefer more |
R+? | one or more R , prefer fewer |
R{n,m} | n or n + 1 or … or m , prefere more |
R{n,m}? | n or n + 1 or … or m , prefere fewer |
R{n,} | n or more R , prefere more |
R{n,}? | n or more R , prefere fewer |
R{n} | exactly n R |
R{n}? | exactly n R |