use regexp::Regexp; fn main() { let tests = ["", "a", "ab", "aabb", "abab", "abcd", "abcbcdbcd"]; for pattern in ["a(b|c)", "a*b*", "a+b+", "(ab)*", "(ab)+", "a((bc)*d)*"] { println!("# {pattern}"); let r = match Regexp::new(&pattern.to_string()) { Ok(r1) => r1.determinize(), Err(e) => { println!("{e}"); continue; } }; for &t in tests.iter() { println!("{t} {}", r.eval(t.to_string())); } println!(); } }