import Foundation
let pattern = #"(\b\d\d[-|\s]\d\b)\s(\b[a-z]+\b)"#
let regex = try! NSRegularExpression(pattern: pattern, options: [.anchorsMatchLines, .caseInsensitive])
let testString = #"""
57-61 P D DeS, 62-4 Dodge 880, 57-64 C
39-56 P, D, 40-52 DeS, 53-4 DeS except wagon, 55-6 DeS Fireflite, 55-6 DeS Firedome except wagon, 40-52 C 6 cyl, 53-6 C except Imp, wagon, LWB
57-8 C, I, 60 with model E AC, PP2, PD4, High Performance, PD1, PD2, PS1, PS3, PC1, PC2, PC3, PY1, 61 with model F AC RP2 Hipo, DeS, C, Imp, 61 Dart 6, 62 P, D 6 without air, 62 C 300 and Newport, 62 P, D with 361, 63 P, D 6 62 P Valiant, Lancer with model G AC, 64 Val, Dart 273, 318, VD2 361, 383 with air and towing, 65 P, D all with 273, 318 and no air, 63-8 DT C500 with 318 and air, 69 P, D exc. Belv. Cor, 70-72 B,J,R,W with 318, 73 B,J,R,W,P,D with 318, 360
"""#
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