// 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)(?P<ip>((?:[0-9]{1,3}\.){3}[0-9]{1,3})).+(?P<request>(GET|POST|HEAD|PUT|DELETE|CONNECT|OPTIONS|TRACE|PATCH)).(?P<endpoint>(.+endpoint1\/health)|(.+endpoint1)|(.+)(\?)|(.+) ).+\".(?P<status>([0-9]{3}))"#).unwrap();
let string = "INFO: 172.0.0.1:0 - \"POST /endpoint1/UNIQUE-ID?key=unique_value HTTP/1.1\" 200 OK
INFO: 172.0.0.2:0 - \"GET /endpoint/health HTTP/1.1\" 200 OK
172.0.0.1:0 - - [04/Mar/2022:10:52:10 -0500] \"GET /endpoint2/optimize HTTP/1.1\" 200 271
INFO: 172.0.0.3:0 :0 - \"GET /endpoint3?key=unique_value HTTP/1.1\" 200 OK";
// 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/