// 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)---\n ((?!---|hostname:) [^\n]+? (\n|$))+ hostname:[^\n]+.domain.com(\n|$) ((?!---|hostname:) [^\n]+? (\n|$))+ (?=---|$)").unwrap();
let string = "---
event: outgoing HTTP response
timestamp: 2021-10-06T08:15:28.212Z
remoteAddress: \"1.2.3.4\"
hostname: a.b.c.domain.com
statusCode: 200
headers:
content-length: 524
etc: ...
body: \"blabla (can be multiline and can contain anything)\"
---
event: outgoing HTTP response
timestamp: 2021-10-06T08:15:28.212Z
remoteAddress: \"1.2.3.4\"
hostname: a.b.c.different.com
statusCode: 200
headers:
content-length: 524
etc: ...
body: \"blabla (can be multiline and can contain anything)\"
---
event: outgoing HTTP response
timestamp: 2021-10-06T08:15:28.212Z
remoteAddress: \"1.2.3.4\"
hostname: 1.2.3.domain.com
statusCode: 200
headers:
content-length: 524
etc: ...
body: \"blabla (can be multiline and can contain anything)\"";
// 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/