commit 5eb377769ede58127231bae7ab5f75362294f5da Author: Avril Date: Thu Apr 30 20:24:12 2020 +0100 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..80aca69 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/target +Cargo.lock +*~ diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..2ee2b28 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "rematch" +version = "0.1.0" +authors = ["Avril "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +regex = "1" \ No newline at end of file diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..3851e1f --- /dev/null +++ b/src/main.rs @@ -0,0 +1,22 @@ +extern crate regex; +use regex::Regex; + +fn main() { + let args: Vec = std::env::args().collect(); + + if args.len() < 4 { + println!("Usage: {} ", args[0]); + } else { + let re = Regex::new(&args[2]).unwrap(); + let text = &args[1]; + let group: usize = args[3].parse().expect("Invalid group number."); + + let groups = re.captures(&text).unwrap(); + + if group > groups.len() { + eprintln!("Invalid group number."); + } else { + println!("{}", groups.get(group).unwrap().as_str()); + } + } +}