import Foundation
let pattern = #"RC[0-9]{6}.[0-9]{4}.[A-Za-z]{1}[0-9]{5}|MP[0-9]{6}.[0-9]{4}.[A-Za-z]{1}[0-9]{5}|CO[0-9]{6}.[0-9]{4}.[A-Za-z]{1}[0-9]{5}"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
Rechargement reussi. Montant de la transaction : 80 FCFA, ID transaction : RC220514.2328.A31840, Frais : 0 FCFA, Commission : 0 FCFA, Nouveau Solde : 0.28FCFA Other msisdn 658747305.
Paiement de FORFAIT INTERNET en succes par 658747305.
ID transaction: MP220512.2119.C83780, Montant: 250 FCFA.
Nouveau solde: 80.28 FCFA.
Retrait d'argent reussi par le 693734202 avec le Code : 226752. Informations detaillees : Montant: 2000 FCFA, Frais: 50 FCFA, No de transaction CO220428.2045.B63327, montant net debite 2050 FCFA, Nouveau solde: 387.1 FCFA.
CashOut success by 698039077 with the Code : 375533. Detailed information : Amount: 1500 FCFA, Fees: 45 FCFA, Transaction ID: CO211211.1932.C52092, Net amount debited 1545FCFA, New balance: 315.1 FCFA.
"""#
let stringRange = NSRange(location: 0, length: testString.utf16.count)
let matches = regex.matches(in: testString, range: stringRange)
var result: [[String]] = []
for match in matches {
var groups: [String] = []
for rangeIndex in 1 ..< match.numberOfRanges {
let nsRange = match.range(at: rangeIndex)
guard !NSEqualRanges(nsRange, NSMakeRange(NSNotFound, 0)) else { continue }
let string = (testString as NSString).substring(with: nsRange)
groups.append(string)
}
if !groups.isEmpty {
result.append(groups)
}
}
print(result)
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