import Foundation
let pattern = #"""
(([\w\.]+)(\.[^/\n]+)\/?(.*\/?)*)
"""#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
google.map.com
google.com
youtube.com/die_bro
y0ut_ube.com
tmall.com
tmall.com/yo/got/mail
facebook.com
facebook.com
baidu.com
baidu.com
qq.com
qq.com
sohu.com
sohu.com
login.tmall.com
login.tmall.com
taobao.com
taobao.com
yahoo.com
yahoo.com
JD.com
JD.com
JD.com
JD.com
jd.com
jd.com
amazon.com
amazon.com
sina.com
sina.com
weibo.com
weibo.com
pages.tmall.com
pages.tmall.com
live.com
live.com
reddit.com
reddit.com
netflix.com
netflix.com
xinhuanet.com
xinhuanet.com
Okezone.com
Okezone.com
Okezone.com
Okezone.com
okezone.com
okezone.com
blogspot.com
blogspot.com
office.com
office.com
microsoft.com
microsoft.com
vk.com
vk.com
csdn.net
csdn.net
instagram.com
instagram.com
alipay.com
alipay.com
bing.com
bing.com
google.com
google.com
bongacams.com
bongacams.com
microsoftonline.com
microsoftonline.com
livejasmin.com
livejasmin.com
tribunnews.com
tribunnews.com
twitter.com
twitter.com
stackoverflow.com
stackoverflow.com
naver.com
naver.com
Amazon.com
Amazon.com
Amazon.com
Amazon.com
aliexpress.com
aliexpress.com
ebay.com
ebay.com
"""#
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