// 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"\b(\d{2})\/(\d{2})\/(\d{4})\s+(\d{2}):(\d{2}):(\d{2}).(\d{3})(\|\[*)\b").unwrap();
let string = "--- Output Example 1
SESSION|01/09/2017 15:35:42.143|[SFTP:1060257_0:it:10.87.16.71] WROTE: *150 Opening BINARY mode data connection. Ready to write file /it/cpp. \"/it/cpp\") S T O R*
SESSION|01/09/2017 15:35:42.890|[SFTP:1060257_0:it:10.87.16.71] READ: *STOR END /it/cpp:PENs3*
SESSION|01/09/2017 15:35:43.133|226-Upload File Size:1571846 bytes @ 1535K/sec. MD5=8438660f668ceb3de586cd7ef1263bc4
--- Output Example 2
SESSION|01/09/2017 15:35:42.143|[SFTP:1060257_0:it:10.87.16.71] WROTE: *150 Opening BINARY mode data connection. Ready to write file /it/cpp. \"/it/cpp\") S T O R*
SESSION|01/09/2017 15:35:43.133|226-Upload File Size:1571846 bytes @ 1535K/sec. MD5=8438660f668ceb3de586cd7ef1263bc4
SESSION|01/09/2017 15:35:42.890|[SFTP:1060257_0:it:10.87.16.71] READ: *STOR END /it/cpp:PENs3*
--- Output Example 3 - Overwrighting Existing files
SESSION|12/20/2016 15:12:26.273|[SFTP:1008699_0:it:10.87.16.71] WROTE: *150 Opening BINARY mode data connection. Ready to write file /it/cpp. \"/it/cpp\") S T O R*
SESSION|12/20/2016 15:12:26.299|226-Upload File Size:25 bytes @ 0K/sec. MD5=7e5e5560ab14904d5f5b2af5fcd8bec3
SESSION|12/20/2016 15:12:26.299|[SFTP:1008699_0:it:10.87.16.71] WROTE: *226 Transfer complete. MD5=7e5e5560ab14904d5f5b2af5fcd8bec3 (\"/it/cpp\" 25) STOR*";
// 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/