mirror of
https://git.proxmox.com/git/rustc
synced 2025-08-18 09:06:27 +00:00
42 lines
1.4 KiB
Rust
42 lines
1.4 KiB
Rust
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"),
|
|
}
|
|
}
|