// 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"(?P<Timestamp>\b(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\s+\d+\s+\d+:\d+:\d+)\b\s+(?P<FW_ip_addr>\d+\.\d+\.\d+\.\d+)\s+(?P<Event_id>%\w+-\d+-\d+):\s+(?P<Event_message>Built (inbound|outbound) TCP connection \d+ for)\s+(?P<External_IP>.*)\s+to\s+(?P<Internal_IP>.*)").unwrap();
let string = "Jul 25 23:56:13 210.56.128.109 %PIX-6-302013: Built inbound TCP connection 71946258 for Outside:192.168.24.16/62465 (192.168.24.16/62465) to Internal:GAIA_172.20.8.11/88 (GAIA_172.20.8.11/88)
Jul 25 23:56:13 210.56.128.109 %PIX-6-302013: Built inbound TCP connection 71946259 for Outside:ODC_crimson-vconf/52620 (ODC_crimson-vconf/52620) to Internal:192.168.104.121/389 (192.168.104.121/389)
Jul 25 23:56:18 210.56.128.109 %PIX-6-302013: Built inbound TCP connection 71946327 for Outside:192.168.24.30/29438 (192.168.24.30/29438) to Internal:172.20.8.154/8080 (172.20.8.154/8080)
Jul 25 23:56:17 210.56.128.109 %PIX-6-302013: Built outbound TCP connection 71946318 for Corp-DMZ:proxy2/8080 (proxy2/8080) to Internal:172.20.8.18/65174 (172.20.8.18/65174)
Jul 25 23:56:18 210.56.128.109 %PIX-6-302013: Built inbound TCP connection 71946334 for Outside:192.168.20.21/18137 (192.168.20.21/18137) to Internal:osaka/445 (osaka/445)
Jul 25 23:57:22 210.56.128.109 %PIX-6-302013: Built outbound TCP connection 71947078 for Outside:HQ_dns_server1/53 (HQ_dns_server1/53) to Corp-DMZ:210.56.134.73/48439 (210.56.134.73/48439)
Jul 25 23:56:13 210.56.128.109 %PIX-6-302013: Built inbound TCP connection 71946258 for Outside:192.168.24.16/62465 (192.168.24.16/62465) to Internal:GAIA_172.20.8.11/88 (GAIA_172.20.8.11/88)
";
// 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/