// include the latest version of the regex crate in your Cargo.toml
extern crate regex;
use regex::Regex;
fn main() {
let regex = Regex::new(r"(?x)# Look for `Wild Draw Four` or simply `Wild`
# `W` stored in \1, `D` and `F` stored in \2 and \3, respectively
(W)I\ LD(?:\ (D)raw\ (F)our)?
|
# Look for `Draw Two` or `Draw Four`
# `D` stored in \4, `T` or `F` stored in \5
(D)raw\ (?|(T)wo|(F)our)
|
# Look for the color and then the card type or number value
# `R`, `G`, `Y`, and `B` stored in \6
# `S`, `R` or number value stored in \7
(?:(?|(R)ed|(G)reen|(Y)ellow|(B)lue)\
(?|(S)kip
|(R)everse
|(\d)
)
)").unwrap();
let string = "GIVEN:
Green 4 Green 4 Green 7 WI LD Green 9 Green 9 Red 3 Red 3 Red 4 WI LD Draw Four Red 5 Red Reverse Yellow 0 Yellow Skip Green 8 WI LD Draw Four
DESIRED:
G4 G4 G7 W G9 G9 R3 R3 R4 WDF R5 RR Y0 YS G8 WDF
";
let substitution = "\\1\\2\\3\\4\\5\\6\\7";
// result will be a String with the substituted value
let result = regex.replace_all(string, substitution);
println!("{}", result);
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Rust, please visit: https://docs.rs/regex/latest/regex/