import Foundation
let pattern = #"\d{9}\t.*2020"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
132403137 v2-gcid-telecom: English (US) 2020-08-18-21-02-30 Experimental English (US) T0 Local Firefly Completed
150 / 0 / 0
-- 5.12 3 2.23 Medium -- No 2020-08-18 anoske 635 Local Search 2020-08-18 mikemaring --
132407180 v2-gcid-car_rental_agency: English (US) 2020-08-18-20-40-40 Experimental English (US) T0 Local Firefly Completed
150 / 0 / 0
-- 5.1 2.83 2.03 Medium -- No 2020-08-18 anoske 635 Local Search 2020-08-18 mikemaring --
132403129 v2-gcid-auto_repair_shop: English (US) 2020-08-18-20-38-13 Experimental English (US) T0 Local Firefly Completed
150 / 0 / 0
-- 5.09 3 2.58 Medium -- No 2020-08-18 anoske 635 Local Search 2020-08-18 mikemaring --
132411145 v2-gcid-beauty_salon: English (US) 2020-08-18-20-36-18 Experimental English (US) T0 Local Firefly Completed
150 / 0 / 0
-- 3.13 3.07 2.77 Medium -- No 2020-08-18 anoske 635 Local Search 2020-08-18 mikemaring --
132403128 v2-gcid-post_office: English (US) 2020-08-18-20-35-25 Experimental English (US) T0 Local Firefly Completed
18 / 0 / 0
-- 5.17 1.28 1.28 Medium -- No 2020-08-18 anoske 635 Local Search 2020-08-18 mikemaring --
132415151 v2-gcid-atm: English (US) 2020-08-18-20-31-37 Experimental English (US) T0 Local Firefly Completed
150 / 0 / 0
-- 5.04 4.05 4.52 Medium -- No 2020-08-18 anoske 635 Local Search 2020-08-18 mikemaring --
132407178 v2-gcid-bank: English (US) 2020-08-18-20-28-45 Experimental English (US) T0 Local Firefly Completed
150 / 0 / 0
-- 3.05 2.48 1.97 Medium -- No 2020-08-18 anoske 635 Local Search 2020-08-18 mikemaring --
132403127 v2-gcid-gas_station: English (US) 2020-08-18-20-26-38 Experimental English (US) T0 Local Firefly Completed
150 / 0 / 0
-- 5.08 2.78 2.17 Medium -- No 2020-08-18 anoske 635 Local Search 2020-08-18 mikemaring --
132411143 v2-gcid-bank: English (US) 2020-08-18-20-21-43 Experimental English (US) T0 Local Firefly Invalidated -- -- -- -- -- Medium -- No 2020-08-18 anoske 635 Local Search -- -- --
132403123 v2-gcid-gas_station: English (US) 2020-08-18-20-18-44 Experimental English (US) T0 Local Firefly Invalidated -- -- -- -- -- Medium -- No 2020-08-18 anoske 635 Local Search -- -- --
132383124 v2-gcid-theme_park: English (US) 2020-08-18-00-59-53 Experimental English (US) T0 Local Firefly Completed
150 / 0 / 0
-- 5.8 3.47 2.98 Medium -- No 2020-08-17 anoske 635 Local Search 2020-08-17 hongyan --
132367118 v2-gcid-nail: English (US) 2020-08-18-00-43-53 Experimental English (US) T0 Local Firefly Completed
300 / 0 / 0
-- 5.18 3.38 3.15 Medium -- No 2020-08-17 anoske 635 Local Search 2020-08-17 hongyan --
132351136 v2-gcid-wedding_photographer: English (US) 2020-08-18-00-42-16 Experimental English (US) T0 Local Firefly Completed
150 / 0 / 0
-- 5.31 2.82 2.3 Medium -- No 2020-08-17 anoske 635 Local Search 2020-08-17 hongyan --
132363117 v2-gcid-tattoo_shop: English (US) 2020-08-18-00-41-06 Experimental English (US) T0 Local Firefly Completed
150 / 0 / 0
-- 5.18 3.72 3.82 Medium -- No 2020-08-17 anoske 635 Local Search 2020-08-17 hongyan --
132375127 v2-gcid-roller_coaster: English (US) 2020-08-18-00-39-45 Experimental English (US) T0 Local Firefly Completed
150 / 0 / 0
-- 5.45 3.22 2.83 Medium -- No 2020-08-17 anoske 635 Local Search 2020-08-17 hongyan --
132371115 v2-gcid-miniature_golf_course: English (US) 2020-08-18-00-38-25 Experimental English (US) T0 Local Firefly Completed
150 / 0 / 0
-- 5.46 2.95 2.02 Medium -- No 2020-08-17 anoske 635 Local Search 2020-08-17 hongyan --
132379104 v2-gcid-hair: English (US) 2020-08-18-00-36-26 Experimental English (US) T0 Local Firefly Completed
300 / 0 / 0
-- 4.8 3.27 2.98 Medium -- No 2020-08-17 anoske 635 Local Search 2020-08-17 hongyan --
132383111 v2-gcid-go_kart_track: English (US) 2020-08-18-00-35-04 Experimental English (US) T0 Local Firefly Completed
250 / 0 / 0
-- 5.29 3.8 3.5 Medium -- No 2020-08-17 anoske 635 Local Search 2020-08-17 hongyan --
132379102 v2-gcid-day_care_center: English (US) 2020-08-18-00-33-42 Experimental English (US) T0 Local Firefly Compl
"""#
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