1 extern crate onig;
2 
3 use onig::*;
4 
main()5 fn main() {
6     let pattern = "(?<foo>a*)(?<bar>b*)(?<foo>c*)";
7     let string = "aaabbbbcc";
8 
9     let r = Regex::new(pattern).unwrap();
10 
11     println!("has {} group names:", r.capture_names_len());
12 
13     for (name, indices) in r.capture_names() {
14         println!("- {}: {:?}", name, indices);
15     }
16 
17     let mut region = Region::new();
18 
19     if let Some(position) = r.search_with_options(
20         string,
21         0,
22         string.len(),
23         SearchOptions::SEARCH_OPTION_NONE,
24         Some(&mut region),
25     ) {
26         println!("match at {} in {:?}", position, string);
27 
28         r.foreach_name(|name, groups| {
29             for group in groups {
30                 let pos = region.pos(*group as usize).unwrap();
31                 println!("- {} ({}): {} - {}", name, group, pos.0, pos.1);
32             }
33 
34             true
35         });
36     } else {
37         println!("search fail")
38     }
39 }
40