mirror of
https://git.proxmox.com/git/rustc
synced 2025-08-26 05:23:31 +00:00
35 lines
975 B
Rust
35 lines
975 B
Rust
use onig::*;
|
|
|
|
fn exec(syntax: &Syntax, pattern: &str, to_search: &str) {
|
|
let reg = Regex::with_options(pattern, RegexOptions::REGEX_OPTION_NONE, syntax).unwrap();
|
|
|
|
match reg.captures(to_search) {
|
|
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"),
|
|
}
|
|
}
|
|
|
|
fn main() {
|
|
exec(
|
|
Syntax::perl(),
|
|
r"\p{XDigit}\P{XDigit}\p{^XDigit}\P{^XDigit}\p{XDigit}",
|
|
"bgh3a",
|
|
);
|
|
|
|
exec(Syntax::java(), r"\p{XDigit}\P{XDigit}[a-c&&b-g]", "bgc");
|
|
|
|
exec(
|
|
Syntax::asis(),
|
|
r"abc def* e+ g?ddd[a-rvvv] (vv){3,7}hv\dvv(?:aczui ss)\W\w$",
|
|
r"abc def* e+ g?ddd[a-rvvv] (vv){3,7}hv\dvv(?:aczui ss)\W\w$",
|
|
);
|
|
}
|