import Foundation
let pattern = #"^SUMME \/ W;\d{1,3};;\d{1,3};\d{1,3};\d{1,3};\K\d{1,3}"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
02.03.;38;;;3;1;42;
03.03.;36;;;3;;39;
04.03.;51;;14;9;1;75;
05.03.;70;;9;9;;88;
06.03.;26;;;2;;28;
SUMME / W;221;;23;26;2;272;
09.03.;35;;10;6;1;52;
10.03.;50;;3;4;;57;
11.03.;48;;4;8;;60;
12.03.;35;;;4;1;40;
13.03.;15;;;3;;18;
SUMME / W;183;;17;25;2;227;
16.03.;23;;7;2;1;33;
17.03.;36;;1;3;;40;
18.03.;36;;;8;;44;
19.03.;34;;;2;;36;
20.+21.03.;22;;4;3;;29;
SUMME / W;151;;12;18;1;182;
23.03.;38;;4;4;1;47;
24.03.;26;;4;5;;35;
25.03.;24;;7;5;;36;
26.03.;22;;;3;;25;
27.+28.03.;4;;;2;;6;
SUMME / W;114;;15;19;1;149;
"""#
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