import Foundation
let pattern = #"(?:(https?):\/\/)?(?:(?:www|m|api)\.)?(soundcloud\.com|snd\.sc)\/+([a-zA-Z0-9\-\.]+\/*[a-zA-Z0-9\-\.]*\/*[a-zA-Z0-9\-\.]*)"#
let regex = try! NSRegularExpression(pattern: pattern, options: [.anchorsMatchLines, .caseInsensitive])
let testString = ##"""
https://soundcloud.com/deejay-la-x
https://soundcloud.com/deejay-la-x/my-christmas-mix-with-tarmac
sdasdddd
https://soundcloud.com/golden-rose-428706194/drip-vol2
https://soundcloud.com/karyomusic/karyo-my-neck-lick-it?utm_source=clipboard&utm_medium=text&utm_campaign=social_sharing
https://soundcloud.com/rnjonesnc/sets/30-flights-of-elevation
https://on.soundcloud.com/5dTNx
<iframe width="100%" height="300" scrolling="no" frameborder="no" allow="autoplay" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/923619058&color=%23ff5500&auto_play=false&hide_related=false&show_comments=true&show_user=true&show_reposts=false&show_teaser=true&visual=true"></iframe><div style="font-size: 10px; color: #cccccc;line-break: anywhere;word-break: normal;overflow: hidden;white-space: nowrap;text-overflow: ellipsis; font-family: Interstate,Lucida Grande,Lucida Sans Unicode,Lucida Sans,Garuda,Verdana,Tahoma,sans-serif;font-weight: 100;"><a href="https://soundcloud.com/kaytranada" title=""KKAAYYTTRRAA"" target="_blank" style="color: #cccccc; text-decoration: none;">"KKAAYYTTRRAA"</a> ยท <a href="https://soundcloud.com/kaytranada/love-is-stronger-than-pride-kaytra-edit" title="LOVE IS STRONGER THAN PRIDE (KAYTRA EDIT)" target="_blank" style="color: #cccccc; text-decoration: none;">LOVE IS STRONGER THAN PRIDE (KAYTRA EDIT)</a></div>
"""##
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