// 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"(?s)Card number:\s(\d+\*+\d+)(?:(?!Card number:).)*?ID:\s*(\d*)(?:(?:(?!Card number:).)*?Total cash dispensed:\s*([a-zA-Z0-9]+)\s+([a-zA-Z0-9]+))?").unwrap();
let string = "Card number: 99280*********8823, SEQ: 182
Current session ID: 182
21/01/2021 08:46:49 : Selected language : French
21/01/2021 08:46:49 : Chip application : NO Active
21/01/2021 09:53:03 : Returned code : 0
21/01/2021 09:53:03 : Pin entered
21/01/2021 09:53:09 : Transaction selected: FastCash 40000 on ATM: Y6154514
21/01/2021 09:53:10 : Returned code : 0
21/01/2021 09:53:13 : FastCash Authorization requested
!XXXXXXXXXXXXXXX3947#20210121065319#686817#0001969C0007469460900002969C000740946090#
21/01/2021 09:53:14 : FastCash Authorized
Returned code : 0, STAN: 686817
21/01/2021 09:53:27 : Cash dispensed
21/01/2021 09:53:28 : Card ejected
21/01/2021 09:53:29 : Card taken
21/01/2021 09:53:32 : Dispense details:
->cass 1: 0 x 5000 MGA, cass 2: 4 x 10000 MGA
->cass 3: 0 x 10000 MGA, cass 4: 0 x 20000 MGA
------->Total cash dispensed: 40000 MGA
21/01/2021 09:53:32 : Cash presented
21/01/2021 09:53:32 : Waiting for cash to be taken
21/01/2021 09:53:33 : Cash taken
21/01/2021 09:53:39 : Transaction completed
21/01/2021 09:53:41 : Session terminated
Card number: 6700*********8823, SEQ: 177
Current session ID: 177
21/01/2021 10:04:06 : Selected language : French
21/01/2021 10:04:06 : Chip application : A0000000031010
21/01/2021 10:04:53 : Returned code : 0
21/01/2021 10:04:54 : Pin entered
21/01/2021 10:05:03 : Transaction selected: BalanceInquiry on ATM: Y892614
21/01/2021 10:05:04 : Returned code : 0
21/01/2021 10:05:09 : BalanceInquiry Authorization requested
!XXXXXXXXXXXX8727#20210121070516#686824
21/01/2021 10:05:10 : BalanceInquiry Authorized
Returned code : 0, STAN: 686824
21/01/2021 10:05:11 : Chip Authorization approved
21/01/2021 10:05:18 : Transaction completed
21/01/2021 10:05:38 : Transaction selected: Statement on ATM: Y892614
21/01/2021 10:05:43 : Statement Authorization requested
!XXXXXXXXXXXX8727#20210121070550#686825#
21/01/2021 10:05:44 : Statement Authorized
Returned code : 0, Auth: 686825
21/01/2021 10:05:45 : Chip authorization declined
21/01/2021 10:06:00 : Card ejected
21/01/2021 10:06:01 : Card taken
21/01/2021 10:06:03 : Session terminated
Card number: 99280*********8823, SEQ: 182
Current session ID: 182
21/01/2021 08:46:49 : Selected language : French
21/01/2021 08:46:49 : Chip application : NO Active
21/01/2021 09:53:03 : Returned code : 0
21/01/2021 09:53:03 : Pin entered
21/01/2021 09:53:09 : Transaction selected: FastCash 40000 on ATM: Y6154514
21/01/2021 09:53:10 : Returned code : 0
21/01/2021 09:53:13 : FastCash Authorization requested
!XXXXXXXXXXXXXXX3947#20210121065319#686817#0001969C0007469460900002969C000740946090#
21/01/2021 09:53:14 : FastCash Authorized
Returned code : 0, STAN: 686817
21/01/2021 09:53:27 : Cash dispensed
21/01/2021 09:53:28 : Card ejected
21/01/2021 09:53:29 : Card taken
21/01/2021 09:53:32 : Dispense details:
->cass 1: 0 x 5000 MGA, cass 2: 4 x 10000 MGA
->cass 3: 0 x 10000 MGA, cass 4: 0 x 20000 MGA
------->Total cash dispensed: 40000 MGA
21/01/2021 09:53:32 : Cash presented
21/01/2021 09:53:32 : Waiting for cash to be taken
21/01/2021 09:53:33 : Cash taken
21/01/2021 09:53:39 : Transaction completed
21/01/2021 09:53:41 : Session terminated";
// 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/