import Foundation
let pattern = ##"(?P<Ano>[2018]+)\|(?P<Mes>[A-Za-z]+)\|(?P<RamGrl>[A-Za-z\s]+)\|(?P<Suc>[\w\s]+)\|(?P<Ofn>[\w\s\d\(\)\-\.\&\,]+)\|(?P<Pmt>[\w\s\d\(\)\-\.\,\¥\*\%\&\Ü\Ñ]+)\|(?P<Agente>[\w\d\s\.\,\¥\¤\$\&\%\-]+)\|(?P<Mon>[A-Za-z]+)\|(?P<SucEmi>[\w\s\.\-\(\)]+)\|(?P<RamoEmi>[\w\s\.\/]+)\|(?P<Poliza>[0-9]+)\|(?P<FecFinVig>[\d\/]+)\|(?P<Cliente>()|[a-zA-ZÀ-ÖØ-öø-ÿ\s\.\,\-\*\'\%\d\&\¥\¤\!\¡\+\`\´\#\(\)\;\€\"\\¨\:\_\@\‘\Ã\.+]+)\|(?P<StaMc>[\w\d]+)\|(?P<FecMC>[\d\/]+)\|(?P<NoAPet>[MSX]+)\|(?P<Renovadas>[\d]+)\|(?P<Observaciobnes>(()|[a-zA-ZÀ-ÖØ-öø-ÿ\d\s\.\,\:\+\(\)\¥\¤\-\#\;\&\$\*\%\'\/\´\!\@\"\‘\Ã])+)\|(?P<Motivo>[S/C]+)\|(?P<PrimaEmi>[\-\d]+)\|(?P<PrimaCob>[0-9]+)\|(?P<Siniestros>[\d\-]+)\|(?P<PolizaNva>[0-9]+)\|(?P<FecRenovacion>[\d\/]+)\|(?P<PrimaDRenov>[0-9]+)\|(?P<CobranzaDRen>[0-9]+)\|"##
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
2018|Feb|AUTOS|MATRIZ|OFICINA MATRIZ|ARMANDO LEON PTACNIK|ARMANDO LEON HERNANDEZ 4684|DLL|ARMANDO L. PTAN|TURISTAS|1067|17/02/2018|ALONSO HERNANDEZ ZAZUETA €|X|01/01/2000|X|45||S/C|368|368|0|0|01/01/2000|0|0|
2018|Feb|AUTOS|MATRIZ|OFICINA MATRIZ|ARMANDO LEON PTACNIK|ARMANDO LEON HERNANDEZ 4684|DLL|ARMANDO L. PTAN|OBLIGATORIO TURISTAS|1067|17/02/2018|ALONSO HERNANDEZ ZAZUETA €|X|01/01/2000|X|45||S/C|1|1|0|0|01/01/2000|0|0|
2018|Mar|AUTOS|MATRIZ|OFICINA MATRIZ|ARMANDO LEON PTACNIK|ARMANDO LEON HERNANDEZ 4684|NAL|ARMANDO L. PTAN|MOTOCICLETAS|187|15/03/2018|ALONSO HERNANDEZ ZAZUETA €|R000216|12/03/2018|S|45|POLIZA YA RENOVADA|S/C|901|901|0|216|12/03/2018|797|0|
2018|Mar|AUTOS|MATRIZ|OFICINA MATRIZ|ARMANDO LEON PTACNIK|ARMANDO LEON HERNANDEZ 4684|NAL|ARMANDO L. PTAN|OBLIGATORIO MOTOCICLETAS|187|15/03/2018|ALONSO HERNANDEZ ZAZUETA €|X|01/01/2000|X|45||S/C|14|14|0|0|01/01/2000|0|0|
2018|Jul|AUTOS|MATRIZ|OFICINA MATRIZ|OFICINA MATRIZ|ROQUE ALONSO P Y ASOCIADOS AGENTE DE SEGUROS Y DE FIANZAS SA DE CV 9761|NAL|MATRIZ|SEGURO DE AUTOMOVILES|767608|07/07/2018|GUSTAVO MONTAÑO ALVAREZ|S806612|19/06/2018|X|0|RENOVADA X NUMERO DE SERIE GUSTAVO MONTAÑO ALVAREZ|S/C|13395|11721|0|0|01/01/2000|0|0|
"""#
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