import Foundation
let pattern = #"""
^\"([^((,\")|(\",))]*)\"|,\"([^((,\")|(\",))]*)\"
"""#
let regex = try! NSRegularExpression(pattern: pattern)
let testString = #""0213379","P","2014",,"","2015","2015","95BAD1D8","Macan S Diesel 18" Räder","951","4T4T","VO","$BI 0M2 0NA 0TD 1BK 1G1 1N3 2JX 2ZH 4A3 6H1 7X2 8JE 9JB C11 PE5 PP8 QE1 QJ6 VR4","B","","1510","","","","","","2014-06-04 00:00:00","","2014-06-04 00:00:00","2014-06-06 00:00:00","","V","K","N","N","N","2014-06-04 00:00:00","","","400","400","J","PIA GRAZ-L","400","PIA GRAZ-L","","","56193.72","63139.01","96","2014-06-04 00:00:00","M","","Walter Josef","Müller","A","8530","Deutschlandsberg","","","","","","","","Feilhofengasse 8","","","","","","","","","","","","","","","","","","","","","Herr","","Rabel","Rene","","","","","","","","","","","2015","03","OR","OR","","258","190","2967","D","4","PDK","A","14","6.7","5.7","6.1","161",".0002","J",".0582","","","","""#
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