import Foundation
let pattern = #"^(?<ROYAL_FLUSH>(A)(.) K\3 Q\3 J\3 T\3)|(?<STRAIGHT_FLUSH>(K)(.) Q\6 J\6 T\6 9\6|(Q)(.) J\8 T\8 9\8 8\8|(J)(.) T\10 9\10 8\10 7\10|(T)(.) 9\12 8\12 7\12 6\12|(9)(.) 8\14 7\14 6\14 5\14|(8)(.) 7\16 6\16 5\16 4\16|(7)(.) 6\18 5\18 4\18 3\18|(6)(.) 5\20 4\20 3\20 2\20|(A)(.) 5\22 4\22 3\22 2\22)|(?<FOUR_OF_A_KIND>.*(.). \24. \24. \24..*)|(?<FULL_HOUSE>(.). \26. (.). \27. \27.|(.). \28. \28. (.). \29.)|(?<FLUSH>(.)(.) .\32 .\32 .\32 .\32)|(?<STRAIGHT>(A). K. Q. J. T.|(K). Q. J. T. 9.|(Q). J. T. 9. 8.|(J). T. 9. 8. 7.|(T). 9. 8. 7. 6.|(9). 8. 7. 6. 5.|(8). 7. 6. 5. 4.|(7). 6. 5. 4. 3.|(6). 5. 4. 3. 2.|A. (5). 4. 3. 2.)|(?<THREE_OF_A_KIND>.*(.). \45. \45..*)|(?<TWO_PAIR>.*(.). \47. .*(.). \48..*)|(?<PAIR>.*(.). \50..*)|(?<HIGH_CARD>(.).*)$"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
AH KH QC JS TS
KH JS 8C 4S 4D
KC 9C 8C 5C 4C
KC KS 8D 4H 2H
AC KS TS 9S 5S
7C 7S 7H 5S 3S
KH QS JS TS 9H
AS AD KH KC 3C
KH KC 5S 5D 2C
6H 5C 4C 3C 2C
9H 8S 7S 6S 5H
KD KC 8S 4S 3H
JC JS JD JH 7H
KD QH JH 8H 8S
KH QH JH TH 9H
KH 7C 7S 7H 2H
AH QH JH TH 8S
3D 3H 2H 2C 2D
KH KC 3S 3H 3D
AD KD TH 9D 6S
TH 9D 7D 6D 2D
AH KH QH JH 8H
KH JC JS JD JH
7C 6C 5C 4C 3C
JC JS JD JH 6H
AH KH QH JH TH
TC 9C 8C 5C 3C
7S 5H 4S 3H 2C
KS 9S 8D 4D 4S
KS 9S 8S 5S 3S
KH KC 5D 5S 3C
AH AS KC JH 8S
3S 3H 3D 2H 2C
AC AH AS KH QH
JH TC 8C 6C 2S
6D 5D 4D 3D 2D
9D 8H 7H 6S 2C
4C 4H 3H 3S 2H
"""#
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