// 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#""(?'group'[\w]+)": {\s*
((\s*"(?'value'[^"]+)": "(?'key'[^"]+)"(?:, *
)?)+)
},?"#).unwrap();
let string = "\"g1\": {
\"k1\": \"v1\",
\"k2\": \"v2\",
\"k3\": \"v3\"
},
\"g2\": {
\"k4\": \"v4\",
\"k5\": \"v5\",
\"k6\": \"v6\"
},
\"g3\": {
\"k7\": \"v7\",
\"k8\": \"v8\",
\"k9\": \"v9\"
}
";
// 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/