// 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#"(Localize|Localizable)\s*\(\s*\"((?:(?:\\\")|[^\"])+)\"(?:\s*,\s*\"((?:(?:\\\")|[^\"])+)\")?\s*\)"#).unwrap();
let string = "Expected Match 1: Localize(\"Text\")
Expected Match 1: Localize(\"\\\"Text\\\"\")
Expected Match 1: Localize(\"\\\"Text\\\"\\\\\")
Expected Match 1: Localize(\"\\\"Text\\\", \\\"\\\"Test\")
Expected Match 2: Localize(\"Text\", \"Context\")
Expected Match 2: Localize(\"\\\"Text\\\"\", \"\\\"Context\\\"\")
Expected Match 2: Localize(\"\\\"Text\\\"\\\\\", \"\\\\\\\"Context\\\"\")
Expected Match 2: Localize(\"\\\"Text\\\", \\\"\\\"Test\", \"Context\\\\\")
Expected Match 2: Localize(\"\\\"\\\"'\\\"'\\\"\")
Expected Unmatch: Localize(Variable)
Expected Unmatch: Localize(Variable, \"Context\")
Expected Unmatch: Localize(\"Text\", Variable)
Compile Error: Localize(\"\\\"\"Text\", Context\\\"\")
Compile Error: Localize(\"NonClosed, \\\"Context\\\")
Compile Error: Localize(\"\\\"Text\\\")
Compile Error: Localize(\"\\\"Text\\\", \"Context\\\")
Compile Error: Localize(\"\\\"Text\\\", \"\\\"Context\")";
// result will be an iterator over tuples containing the start and end indices for each match in the string
let result = regex.captures_iter(string);
for mat in result {
println!("{:?}", mat);
}
}
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/