I have 2 functions written in Swift 2, but Apple forced me to migrate to Swift 4 and I can't fix the functions.
extension String {
    func stringsMatchingRegularExpression(expression: String) -> [String] {
        if let range = self.rangeOfString(expression, options: NSString.CompareOptions.RegularExpressionSearch, range: nil, locale: nil) {
            return [self[range]] + self[range.endIndex..<self.endIndex].stringsMatchingRegularExpression(expression)
        }
        return []
    }
    func stringsMatchingRegularExpressionLarge(expression: String) -> [String] {
        var result = [String]()
        var currentRange = self.characters.indices
        while let range = self.rangeOfString(expression, options: NSString.CompareOptions.RegularExpressionSearch, range: currentRange, locale: nil) {
            result.append(self[range])
            currentRange.startIndex = range.endIndex
        }
        return result
    }
}
The return of the first function is the problem I can't fix it.
The 3rd line is if let range = self.range(of: expression, options: NSString.CompareOptions.regularExpression, range: nil, locale: nil){ in Swift 4
In 2nd function I don't know how .characters migrating.
 
    