import Foundation
let pattern = #"(^[2-9][0-9]{2}$)|(^[1-2][0-9]{3}$)"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
1
12
19
20
21
29
30
31
40
50
60
70
80
98
99
100
101
102
149
150
180
190
199
200
201
202
300
400
500
600
999
1000
1001
1002
2000
3000
9999
10000
10001
10002
10003
19999
20000
20001
20002
30000
50000
60000
99999
100000
100001
30000000
"""#
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