import Foundation
let pattern = #".*сума:\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})"#
let regex = try! NSRegularExpression(pattern: pattern, options: [.anchorsMatchLines, .caseInsensitive])
let testString = #"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"#
let stringRange = NSRange(location: 0, length: testString.utf16.count)
if let firstMatch = regex.firstMatch(in: testString, range: stringRange) {
let result: [String] = (1 ..< firstMatch.numberOfRanges).map { (testString as NSString).substring(with: firstMatch.range(at: $0)) }
print(result)
} else {
print("No matches were found.")
}
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 Swift 5.2, please visit: https://developer.apple.com/documentation/foundation/nsregularexpression