1use onig::*;
2
3fn main() {
4 let mut syntax = Syntax::default().clone();
5
6 syntax.set_operators(SyntaxOperator::SYNTAX_OPERATOR_VARIABLE_META_CHARACTERS);
7 syntax.set_behavior(SyntaxBehavior::empty());
8 syntax.set_options(RegexOptions::REGEX_OPTION_MULTILINE);
9
10 syntax.set_meta_char(MetaCharType::META_CHAR_ESCAPE, MetaChar::Character('\\'));
11 syntax.set_meta_char(MetaCharType::META_CHAR_ANYCHAR, MetaChar::Character('_'));
12 syntax.set_meta_char(MetaCharType::META_CHAR_ANYTIME, MetaChar::Ineffective);
13 syntax.set_meta_char(
14 MetaCharType::META_CHAR_ZERO_OR_ONE_TIME,
15 MetaChar::Ineffective,
16 );
17 syntax.set_meta_char(
18 MetaCharType::META_CHAR_ONE_OR_MORE_TIME,
19 MetaChar::Ineffective,
20 );
21 syntax.set_meta_char(
22 MetaCharType::META_CHAR_ANYCHAR_ANYTIME,
23 MetaChar::Character('%'),
24 );
25
26 let reg =
27 Regex::with_options("\\_%\\\\__zz", RegexOptions::REGEX_OPTION_NONE, &syntax).unwrap();
28
29 match reg.captures("a_abcabcabc\\ppzz") {
30 Some(caps) => {
31 println!("match at {}", caps.offset());
32 for (i, cap) in caps.iter_pos().enumerate() {
33 match cap {
34 Some(pos) => println!("{}: {:?}", i, pos),
35 None => println!("{}: did not capture", i),
36 }
37 }
38 }
39 None => println!("search fail"),
40 }
41}