// 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#"(?m)(\[|){\n(?<tab> )"id": "[0-9]*",\n\<tab>"type": [0-9],\n\<tab>"content": "[^"]*",\n\<tab>"channel_id": "[0-9]*",\n\<tab>"author": {\n(?<dtab> )"id": "[^"]*",\n\<dtab>"username": "[^"]*",\n\<dtab>"avatar": "[^"]*",\n\<dtab>"discriminator": "([0-9]{4}|[0-9])",\n\<dtab>"public_flags": [0-9]*,\n\<dtab>"flags": [0-9]*,\n\<dtab>"banner": (null|"[0-9]*"),\n\<dtab>"accent_color": (null|"[^"]*"),\n\<dtab>"global_name": "[^"]*",\n\<dtab>"avatar_decoration_data": (null|"[^"]*"),\n\<dtab>"banner_color": (null|"[^"]*")\n\<tab>},\n\<tab>"attachments": \[[^\]]*\],\n\<tab>"embeds": \[[^\]]*],\n\<tab>"mentions": \[[^\]]*],\n\<tab>"mention_roles": \[[^\]]*\],\n\<tab>"pinned": (true:|false),\n\<tab>"mention_everyone": (true|false),\n\<tab>"tts": (true:|false),\n\<tab>"timestamp": "[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}.[0-9]{6}\+[0-9]{2}:[0-9]{2}",\n\<tab>"edited_timestamp": (null|"[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}.[0-9]{6}\+[0-9]{2}:[0-9]{2}"),\n\<tab>"flags": [0-9]*,\n\<tab>"components": \[[^\]]*]\n}(\]|\,|)"#).unwrap();
let string = "{
\"id\": \"1145344233713188874\",
\"type\": 0,
\"content\": \"913 - this icecream good\",
\"channel_id\": \"1124414874454339715\",
\"author\": {
\"id\": \"746383273621717104\",
\"username\": \"kalote.\",
\"avatar\": \"95b9bdc7aa5784a2354e2ec5256ae736\",
\"discriminator\": \"0\",
\"public_flags\": 128,
\"flags\": 128,
\"banner\": null,
\"accent_color\": null,
\"global_name\": \"Carrot :3\",
\"avatar_decoration_data\": null,
\"banner_color\": null
},
\"attachments\": [],
\"embeds\": [],
\"mentions\": [],
\"mention_roles\": [],
\"pinned\": false,
\"mention_everyone\": false,
\"tts\": false,
\"timestamp\": \"2023-08-27T13:09:04.784000+00:00\",
\"edited_timestamp\": null,
\"flags\": 0,
\"components\": []
},";
// 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/