// 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"(?mi).*сума:\s+(?<suma>\d{1,5}[.,]\d{1,2}).*\\n(?<issuerName>.*)(?<pan>[0-9X]{16}).*нал:\s(?<terminalId>[A-Z0-9]{8}).*авторизації:\s(?<approvalCode>\d{1,10}).*чек\sN:\s(?<chq>\d{1,10}).*rrn:\s(?<rrn>\d{1,15})").unwrap();
let string = "Xxxxxxx \\n вул.Угорська,буд.12 \\n м.Львiв \\n ПП МЕРЕЖА-СЕРВIС ЛЬВIВ \\nОПЛАТА\\nСУМА: 62.98 ГРН\\nПiдпис власника картки не потрiбен!\\nVISA CREDIT 4472XXXXXXXX2021 \\nAID: A0000000031010\\nТЕРМIНАЛ: S11801ZY 16/09/2022 18:49:33\\nКОД АВТОРИЗАЦІЇ: 799207 ЧЕК N: 43409\\nRRN: 063597415491 \\nEXTERNAL RRN: 225915128338\\n(c) Ingenico Group TE7E v.142.102 27/10/\\nP1\\n";
// result will be a tuple containing the start and end indices for the first match in the string
let result = regex.captures(string);
let (start, end) = match result {
Some((s, e)) => (s, e),
None => {
// ...
}
};
println!("{}", &string[start, end]);
}
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/