import Foundation
let pattern = #"^[ABCEGHJKLMNPRSTVXY]\d[A-Za-z][ -]\d[A-Za-z]\d$"#
let regex = try! NSRegularExpression(pattern: pattern, options: [.anchorsMatchLines, .caseInsensitive])
let testString = #"""
K1G
----====
K1G 6C9
Z1R p90
w4t908
w4r io9
yt4 g7y
K1G 6C9---
K1G 6C9====
K1G 6C9K1G 6C9
K1G 6C9K1G 6C9K1G 6C9
K1G 6C9slkdjfsdklfjsdkjfhsdf
$[ABCEGHJKLMNPRSTVXY][0-9][ABCEGHJKLMNPRSTVWXYZ]{3} $[0-9][ABCEGHJKLMNPRSTVWXYZ][0-9]{3}
K1G 6C9
K1G6C9
L7J 0A1
L7J 0A2
L7J 0A3
L7J 0A4
L7J 0A5
L7J 0A6
L7J 0A7
L7J 2Y3
L7J 2Y4
L7J 2Y5
L7J 2Y6
L7J 2Y7
L7J 2Y8
L7J 2Y9
L7J 2Z1
L7J 2Z2
N0G 0B5
N0G 2X0
W0G 0B5
Y0G 2X0
N0H 2T0
Z0G 2X0
"""#
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