import Foundation
let pattern = #"([\d]{1,2})\s+([\w]+)\s+([\d]{4})\s+-\s+([\d]{1,2})\s+([\w]+)\s+([\d]{4})\s+([\d]{1,2})\s+N[a,ä]chte\s+([.\s\S]+)\s+DERTOUR"#
let regex = try! NSRegularExpression(pattern: pattern, options: .caseInsensitive)
let testString = #"""
Mit freundlichen Grüßen
i.A. Center Parcs Europe N.V.
Tel.: 0221-97303042
Fax: 0221-97303019
EMail: dertour@groupepvcp.com
Vertragspartner: Center Parcs Europe N.V.; Korrespondenzadresse: Kaltenbornweg 1-3, 50679 Köln
Geschäftsführer: Pascal R.L. Ferracci, Mark David Haak Wegmann
Von: ltr-staedte.fra@dertouristik.com <ltr-staedte.fra@dertouristik.com>
Gesendet: Montag, 4. Juli 2016 14:07
An: PVCP, Dertour
Betreff: ADVISING=2016/07/04, SeqNo=738, RefNo=201607042684
CPNK§
Center Parcs Nordseeküste GmbH
Attn.: Frau Schwamborn
Kaltenbornweg 1-3
D-50679 Köln
BRV10888 Center Parcs Park Nordseeküste
-- OK gebucht --
DER-REF.: 671509446-3 RES-DAT.: 04 JUL 2016
Personen: 6 Erw.
Kopie
01 X BK792
( EUR 917.60 )
08 JUL 2016 - 15 JUL 2016 7 Nächte
Bestätigt nach Anfrage
Frau MENTHE/URSULA
Herr MENTHE/CHRISTOPH
Herr MENTHE/HEIKO
Frau MENTHE/CHRISTINA
Kind MENTHE/SILJA (08)
Kind MENTHE/JANDRIK (04)
BRV10888 Center Parcs Park Nordseeküste
-- Bitte stornieren --
DER-REF.: 671509446-2 RES-DAT.: 29 JUN 2016
Personen: 6 Erw.
Kopie: kein komplettes Storno - nur Umbuchung auf Termin 08.-15.07.
01 X BK792
( EUR 1,359.20 )
08 JUL 2016 - 18 JUL 2016 10 Nächte
Freesale
Frau MENTHE/URSULA
Herr MENTHE/CHRISTOPH
Herr MENTHE/HEIKO
Frau MENTHE/CHRISTINA
Kind MENTHE/SILJA (08)
Kind MENTHE/JANDRIK (04)
DERTOUR GmbH & Co. KG
Erlebnisparks FAX: 069/9588-5122
++ ENDE AVIS ++
"""#
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