You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

57 lines
1.2 KiB

#[cfg(not(feature = "perl"))]
extern crate regex;
#[cfg(not(feature = "perl"))]
use regex::Regex;
#[cfg(not(feature = "perl"))]
fn main() {
let args: Vec<String> = std::env::args().collect();
if args.len() < 4 {
println!("Usage: {} <str> <regex> <group>", args[0]);
} else {
let re = Regex::new(&args[2]).unwrap();
let text = &args[1];
let group: usize = args[3].parse().expect("Invalid group number.");
match re.captures(&text) {
Some(groups) => {
if group > groups.len() {
eprintln!("Invalid group number.");
} else {
println!("{}", groups.get(group).unwrap().as_str());
}
}
None => (),
}
}
}
#[cfg(feature = "perl")]
extern crate pcre;
#[cfg(feature = "perl")]
use pcre::Pcre;
#[cfg(feature = "perl")]
fn main () {
let args: Vec<String> = std::env::args().collect();
if args.len() < 4 {
println!("Usage: {} <str> <regex> <group>", args[0]);
} else {
let mut re = Pcre::compile(&args[2]).expect("Invalid regex.");
let text = &args[1];
let group: usize = args[3].parse().expect("Invalid group number.");
match re.exec(&text) {
Some(m) if m.string_count() > group => println!("{}", m.group(group)),
_ => (),
}
}
}