use onig::*; fn exec(syntax: &Syntax, pattern: &str, to_search: &str) { let reg = Regex::with_options(pattern, RegexOptions::REGEX_OPTION_NONE, syntax).unwrap(); match reg.captures(to_search) { Some(caps) => { println!("match at {}", caps.offset()); for (i, cap) in caps.iter_pos().enumerate() { match cap { Some(pos) => println!("{}: {:?}", i, pos), None => println!("{}: did not capture", i), } } } None => println!("search fail"), } } fn main() { exec( Syntax::perl(), r"\p{XDigit}\P{XDigit}\p{^XDigit}\P{^XDigit}\p{XDigit}", "bgh3a", ); exec(Syntax::java(), r"\p{XDigit}\P{XDigit}[a-c&&b-g]", "bgc"); exec( Syntax::asis(), r"abc def* e+ g?ddd[a-rvvv] (vv){3,7}hv\dvv(?:aczui ss)\W\w$", r"abc def* e+ g?ddd[a-rvvv] (vv){3,7}hv\dvv(?:aczui ss)\W\w$", ); }