diff --git a/regex/Cargo.toml b/regex/Cargo.toml new file mode 100644 index 0000000..74450d0 --- /dev/null +++ b/regex/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "regex" +version = "0.1.0" +authors = ["Hatter Jiang "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +regex = "1.3.1" + + + diff --git a/regex/src/main.rs b/regex/src/main.rs new file mode 100644 index 0000000..a6810ab --- /dev/null +++ b/regex/src/main.rs @@ -0,0 +1,27 @@ +use regex::Regex; + +const TO_SEARCH: &str = " +On 2010-03-14, foo happened. On 2014-10-14, bar happened. +"; + +fn main() { + let re = Regex::new(r"(\d{4})-(\d{2})-(\d{2})").unwrap(); + + for caps in re.captures_iter(TO_SEARCH) { + println!("year: {}, month: {}, day: {}", + caps.get(1).unwrap().as_str(), + caps.get(2).unwrap().as_str(), + caps.get(3).unwrap().as_str()); + } + + let re2 = Regex::new(r"(\d+)").unwrap(); + println!("{}", re2.replace_all("Hello 100, 200", | caps: ®ex::Captures | { + "(".to_owned() + &caps[1] + ")" + })); + println!("{}", re2.replace_all("Hello 100, 200", | caps: ®ex::Captures<'_> | { + "[".to_owned() + &caps[1] + "]" + })); + + let re3 = Regex::new(r"(?P\d+)").unwrap(); + println!("{}", re3.replace_all("Hello 100, 200", "<$x>")); +}