1use regex_specificity::get;
2
3fn main() {
4 let string = "alice@myprovider.com";
5
6 let patterns = vec![
8 r".*",
9 r"[a-z]+@[a-z]+\.[a-z]+",
10 r"alice@[a-z]+\.[a-z]+",
11 ];
12
13 let mut results: Vec<(&str, u64)> = Vec::new();
14
15 for pattern in patterns {
16 if let Ok(score) = get(string, pattern) {
17 results.push((pattern, score));
18 }
19 }
20
21 results.sort_by(|(_, a), (_, b)| b.cmp(a));
22
23 print(string, results);
24}
25
26fn print(string: &str, results: Vec<(&str, u64)>) {
27 const RW: usize = 12;
28 const PW: usize = 40;
29
30 println!("Target String: '{}'", string);
31 println!("┌{:─^rw$}┬{:─^pw$}┐", "─", "─", rw = RW, pw = PW);
32 println!(
33 "│ {:<rw$} │ {:<pw$} │",
34 "Result",
35 "Pattern",
36 rw = RW - 2,
37 pw = PW - 2
38 );
39 println!("├{:─^rw$}┼{:─^pw$}┤", "─", "─", rw = RW, pw = PW);
40 for (pattern, result) in results {
41 println!(
42 "│ {:<rw$} │ {:<pw$} │",
43 result,
44 pattern,
45 rw = RW - 2,
46 pw = PW - 2
47 );
48 }
49 println!("└{:─^rw$}┴{:─^pw$}┘", "─", "─", rw = RW, pw = PW);
50}