// 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#"(?sim)^<(?<Direction>(Send|Recv)) TYPE=""(?<Function>.+?)"" UTC=""(?<date>.+?)"" ID=""(?<ID>.+?)""(?:\s*\/>|>(?<Message>.*?)<\/\1>)$"#).unwrap();
let string = "<Recv TYPE=\"Select.req\" UTC=\"05.11.2024 01:43:35\" ID=\"2130706432\" />
<Send TYPE=\"Select.req\" UTC=\"05.11.2024 01:43:35\" ID=\"1152\" />
<Send TYPE=\"Select.rsp\" UTC=\"05.11.2024 01:43:35\" ID=\"2130706432\" />
<Send TYPE=\"S1F13W\" UTC=\"05.11.2024 01:43:35\" ID=\"1153\">
<List Items=\"2\">
<Ascii Size=\"17\" ItemName=\"MDLN\">SECSService</Ascii>
<Ascii Size=\"20\" ItemName=\"SOFTREV\">1.0</Ascii>
</List>
</Send>
<Recv TYPE=\"Select.rsp\" UTC=\"05.11.2024 01:43:35\" ID=\"1152\" />
<Recv TYPE=\"S1F14\" UTC=\"05.11.2024 01:43:36\" ID=\"1153\">
<List Items=\"2\">
<Binary Size=\"4\">0x00</Binary>
<List Items=\"0\" />
</List>
</Recv>
<Recv TYPE=\"S1F13W\" UTC=\"05.11.2024 01:43:36\" ID=\"1\">
<List Items=\"0\" />
</Recv>
<Send TYPE=\"S2F34\" UTC=\"05.11.2024 01:43:38\" ID=\"4\">
<Binary Size=\"4\" ItemName=\"DRACK\">0x00</Binary>
</Send>
<Recv TYPE=\"S2F37W\" UTC=\"05.11.2024 01:43:39\" ID=\"5\">
<List Items=\"2\">
<Boolean Size=\"5\">False</Boolean>
<List Items=\"17\">
<UInt32 Size=\"1\">1</UInt32>
<UInt32 Size=\"1\">2</UInt32>
<UInt32 Size=\"1\">3</UInt32>
<UInt32 Size=\"1\">5</UInt32>
<UInt32 Size=\"1\">6</UInt32>
<UInt32 Size=\"2\">10</UInt32>
<UInt32 Size=\"2\">11</UInt32>
<UInt32 Size=\"2\">20</UInt32>
<UInt32 Size=\"2\">21</UInt32>
<UInt32 Size=\"2\">22</UInt32>
<UInt32 Size=\"2\">40</UInt32>
<UInt32 Size=\"2\">41</UInt32>
<UInt32 Size=\"2\">42</UInt32>
<UInt32 Size=\"2\">50</UInt32>
<UInt32 Size=\"2\">52</UInt32>
<UInt32 Size=\"2\">70</UInt32>
<UInt32 Size=\"2\">71</UInt32>
</List>
</List>
</Recv>";
// 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/