import Foundation
let pattern = ##"""
# Look for `Wild Draw Four` or simply `Wild`
# `W` stored in \1, `D` and `F` stored in \2 and \3, respectively
(W)I\ LD(?:\ (D)raw\ (F)our)?
|
# Look for `Draw Two` or `Draw Four`
# `D` stored in \4, `T` or `F` stored in \5
(D)raw\ (?|(T)wo|(F)our)
|
# Look for the color and then the card type or number value
# `R`, `G`, `Y`, and `B` stored in \6
# `S`, `R` or number value stored in \7
(?:(?|(R)ed|(G)reen|(Y)ellow|(B)lue)\
(?|(S)kip
|(R)everse
|(\d)
)
)
"""##
let regex = try! NSRegularExpression(pattern: pattern, options: .allowCommentsAndWhitespace)
let testString = #"""
GIVEN:
Green 4 Green 4 Green 7 WI LD Green 9 Green 9 Red 3 Red 3 Red 4 WI LD Draw Four Red 5 Red Reverse Yellow 0 Yellow Skip Green 8 WI LD Draw Four
DESIRED:
G4 G4 G7 W G9 G9 R3 R3 R4 WDF R5 RR Y0 YS G8 WDF
"""#
let stringRange = NSRange(location: 0, length: testString.utf16.count)
let substitutionString = #"\1\2\3\4\5\6\7"#
let result = regex.stringByReplacingMatches(in: testString, range: stringRange, withTemplate: substitutionString)
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