import Foundation
let pattern = #"(\.(fit|link)+?)(?:$|\/|\:)"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
ill.com.au@hitme.fit
something@hitme.fit
something.fit@hitme.fit
something.link@hitme.fit
1axcjcbue5xsahq5evlru8vi84l8phe4kd5rmv-user=domain.com.au@5841205t.scamlottery.com
1axcjcbue5xsahq5evlru8vi84l8phe4kd5rmv-user=domain.com.link@5841205t.scamlottery.com
no.hit.link@account.fitbit.com
no.hit.fit@account.fit.com
something@fit.com
www.hitme.fitbit/url
www.hitme.fitbit:443/url
www.hitme.fitbit/url
ftp://hitme.good.com/unknown
ftp://hitme.fitbit/unknown
ftp://hitme.fitbit:23/url.link/
ftps://hitme.good.com/unknown
ftps://hitme.fitbit/unknown
ftps://hitme.fit:23/url.link/
hitme.fit
hitme.fit:443
hitme.fit/link
www.hitme.fit
www.hitme.fit:443
www.hitme.fit/link
https://hitme.fit
https://hitme.fit:443
https://hitme.fit/link
https://www.hitme.fit
https://www.hitme.fit:443
https://www.hitme.fit/link
https://hitme.link/transactional/link/6111b67123123fd001d7da8b2/
https://good.link.com/transactional/link.fit/6111b67123123fd001d7da8b2/
https://good.link.com/transactional/fit.link/6111b67123123fd001d7da8b2/
http://www.answers.com/article/1194427/8-habits-of-extraordinarily-likeable-people
http://www.apple.com
http://www.cnn.com.au/?link.fit/
http://downloads.news.com.au
http://ftp.android.co.nz
http://global.news.ca
http://www.apple.com
REV1 (:\/\/)?(\w*\.)*(link)(\/.*)?$
REV2 (\.(fit|link)+?)(?:$|\/|:)
"""#
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