import Foundation
let pattern = #"(Q\.\W*\d{1,2}\W*Incontournable.*?)(?=Q\.)"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"Q. 1 Incontournable Cercle 1 _ 30 - Gestion Actif / Passif \nQuel est le dispositif de limites de l’établissement ? Quels indicateurs sont retenus ? Sont-ils \npertinents ? a-t-il été validé par le Comité des risques ? Quelle est la fréquence de revue des \nindicateurs et des limites associées ? (revue a minima annuelle prévue par l’article 224 de l’arrêté \ndu 3 novembre 2014) ? \n Cliquez ici pour taper du texte. \n \n \n \n Q. 2 _ ☐ \nCe dispositif respecte-t-il les normes du Groupe BPCE ? \n \n Q. 3 Incontournable Cercle 1 _ 30 - Gestion Actif / Passif \nQuel dispositif se déclenche en cas de dépassements des limites ? L’établissement informe-t-il la \nDRCCP, conformément au Référentiel des Risques de marché Groupe, du plan d’action mis en place \nafin de revenir dans les limites ? L\'information a-telle été remontée au comité des risques et d\'audit \nde l\'établissement ? \n Contrôle & Test \nS’assurer de l’existence de procédures de gestion des dépassements de limite incluant \nnotamment les alertes et les plans de retour dans les limites. Vérifier que ce dispositif est \ndocumenté, présenté au Comité des Risques de l’établissement et communiqué à la \nDirection des Risques locale ainsi qu’à la DRCCP BPCE. \n \n Q. 4 _"#
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