import Foundation
let pattern = #"^https?:\/\/[^\/]+(\/d\/|\/m\/)"#
let regex = try! NSRegularExpression(pattern: pattern, options: [.anchorsMatchLines, .caseInsensitive])
let testString = #"""
https://internet.hughesnet.com/d/order/?exp=1
https://test-internet.hughesnet.redventures.com/d/order/?exp=1
http://localhost-internet.hughesnet.redventures.com/d/order/?exp=1
https://internet.hughesnet.com/mobile/order/?exp=1
https://test-internet.hughesnet.redventures.com/mobile/order/?exp=1
http://localhost-internet.hughesnet.redventures.com/mobile/order/?exp=1
https://internet.hughesnet.com/m/order/?exp=1
https://test-internet.hughesnet.redventures.com/m/order/?exp=1
http://localhost-internet.hughesnet.redventures.com/m/order/?exp=1
https://internet.hughesnet.com/order/?exp=1
https://test-internet.hughesnet.redventures.com/order/?exp=1
http://localhost-internet.hughesnet.redventures.com/order/?exp=1
https://internet.hughesnet.com/?exp=1
https://test-internet.hughesnet.redventures.com/?exp=1
http://localhost-internet.hughesnet.redventures.com/?exp=1
https://www.directvdeals.com/d/bundles.html
https://www.directvdeals.com/d/?hnkw=%2Bhughesnet&s_ace=&s_adp=1t1&s_agid=39321230140&s_aid=221800323027&s_cid=739574798&s_dvc=c&s_kid=22337170519&s_loci=&s_locp=9010670&s_ntwk=g&s_pid=1&s_plid=&s_sid=197&s_tgtid=aud-329726877564:kwd-22337170519&utm_mcid=3198048&utm_source=google&utm_medium=cpc&utm_term=%2Bhughesnet&utm_cmpid=739574798&utm_adgid=39321230140&utm_tgtid=aud-329726877564:kwd-22337170519&utm_mt=b&utm_adid=221800323027&utm_dvc=c&utm_ntwk=g&utm_adpos=1t1&utm_plcmnt=&utm_locphysid=9010670&utm_locintid=&utm_feeditemid=&utm_devicemdl=&utm_plcmnttgt=&gclid=CjwKCAjw36DpBRAYEiwAmVVDMMUJoi-t1iWDby7eC5zV3HqMA4RM9iIDsihOnFwTNw9P2seGKtSfoRoCuTMQAvD_BwE
"""#
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