Skip to main content

syntax/
syntax.rs

1use onig::*;
2
3fn exec(syntax: &Syntax, pattern: &str, to_search: &str) {
4    let reg = Regex::with_options(pattern, RegexOptions::REGEX_OPTION_NONE, syntax).unwrap();
5
6    match reg.captures(to_search) {
7        Some(caps) => {
8            println!("match at {}", caps.offset());
9            for (i, cap) in caps.iter_pos().enumerate() {
10                match cap {
11                    Some(pos) => println!("{}: {:?}", i, pos),
12                    None => println!("{}: did not capture", i),
13                }
14            }
15        }
16        None => println!("search fail"),
17    }
18}
19
20fn main() {
21    exec(
22        Syntax::perl(),
23        r"\p{XDigit}\P{XDigit}\p{^XDigit}\P{^XDigit}\p{XDigit}",
24        "bgh3a",
25    );
26
27    exec(Syntax::java(), r"\p{XDigit}\P{XDigit}[a-c&&b-g]", "bgc");
28
29    exec(
30        Syntax::asis(),
31        r"abc def* e+ g?ddd[a-rvvv] (vv){3,7}hv\dvv(?:aczui ss)\W\w$",
32        r"abc def* e+ g?ddd[a-rvvv] (vv){3,7}hv\dvv(?:aczui ss)\W\w$",
33    );
34}