Swift到目前为止还没有本地正则表达式。但
Foundation提供
NSRegularexpression。
import Foundationlet toSearch = "323 ECO Economics Course 451 ENG English Course 789 MAT Mathematical Topography"let pattern = "[0-9]{3} [A-Z]{3}"let regex = try! NSRegularexpression(pattern: pattern, options: [])// NSRegularexpression works with objective-c NSString, which are utf16 enpredlet matches = regex.matches(in: toSearch, range: NSMakeRange(0, toSearch.utf16.count))// the combination of zip, dropFirst and map to optional here is a trick// to be able to map on [(result1, result2), (result2, result3), (result3, nil)]let results = zip(matches, matches.dropFirst().map { Optional.some($0) } + [nil]).map { current, next -> String in let range = current.rangeAt(0) let start = String.UTF16Index(range.location) // if there's a next, use it's starting location as the ending of our match // otherwise, go to the end of the searched string let end = next.map { $0.rangeAt(0) }.map { String.UTF16Index($0.location) } ?? String.UTF16Index(toSearch.utf16.count) return String(toSearch.utf16[start..<end])!}dump(results)运行此将输出
▿ 3 elements - "323 ECO Economics Course " - "451 ENG English Course " - "789 MAT Mathematical Topography"



