import Foundation
let pattern = #"([12]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01]) ([01][0-9]|2[0-3]):[0-5]\d)"#
let regex = try! NSRegularExpression(pattern: pattern)
let testString = #"""
minute/second
2105-12-21 00:00
2105-12-21 00:60
2105-12-21 23:00
2105-12-21 24:00
2105-12-21 23:59
year/month/day
2105-00-00 11:01
2105-00-01 11:01
2105-01-00 11:01
2105-01-01 11:01
2105-01-12 11:01
2105-01-13 11:01
2105-01-20 11:01
2105-01-29 11:01
2105-01-30 11:01
2105-01-31 11:01
2105-01-32 11:01
2105-00-31 11:01
2105-01-31 11:01
2105-09-31 11:01
2105-10-31 11:01
2105-12-31 11:01
2105-13-31 11:01
2016-01-01 11:11
3016-01-01 11:11
1016-01-01 11:11
0016-01-01 11:11
"""#
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