| use onig::*; |
| |
| fn main() { |
| let mut syntax = Syntax::default().clone(); |
| |
| syntax.set_operators(SyntaxOperator::SYNTAX_OPERATOR_VARIABLE_META_CHARACTERS); |
| syntax.set_behavior(SyntaxBehavior::empty()); |
| syntax.set_options(RegexOptions::REGEX_OPTION_MULTILINE); |
| |
| syntax.set_meta_char(MetaCharType::META_CHAR_ESCAPE, MetaChar::Character('\\')); |
| syntax.set_meta_char(MetaCharType::META_CHAR_ANYCHAR, MetaChar::Character('_')); |
| syntax.set_meta_char(MetaCharType::META_CHAR_ANYTIME, MetaChar::Ineffective); |
| syntax.set_meta_char( |
| MetaCharType::META_CHAR_ZERO_OR_ONE_TIME, |
| MetaChar::Ineffective, |
| ); |
| syntax.set_meta_char( |
| MetaCharType::META_CHAR_ONE_OR_MORE_TIME, |
| MetaChar::Ineffective, |
| ); |
| syntax.set_meta_char( |
| MetaCharType::META_CHAR_ANYCHAR_ANYTIME, |
| MetaChar::Character('%'), |
| ); |
| |
| let reg = |
| Regex::with_options("\\_%\\\\__zz", RegexOptions::REGEX_OPTION_NONE, &syntax).unwrap(); |
| |
| match reg.captures("a_abcabcabc\\ppzz") { |
| 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"), |
| } |
| } |