blob: 5167d06e827d9eaa900dbd11eaeabd2e2561a256 [file] [log] [blame] [edit]
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"),
}
}