import Foundation
let pattern = #"^(.*?)(?:\'s.*)?(?:\s*(?:Original|Extended|Club|Vocal|Dub|DJ|Tech|Summer of Love|12\"))*\s+(?:Remix|Rework|Remake|Reboot|Mix|Bootleg|Version|Edit)$"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
Original Mix
Vocal Club Mix
Vocal Mix
Arbe & Dann Rework
Protoculture Remix
Extended Mix
Club Mix
Above & Beyond Extended Club Mix
Above & Beyond Mix
Daniel Kandi Extended Mix
Myon Extended Summer of Love Reboot
Above & Beyond Club Mix
Mike Shiver's Catching Sun Mix
Millennial's On Full Force Extended Remix
DJ Tiesto's Magikal Remake
Dustin Husain Bootleg
Extended Version
Daniel Kandi Mix
Above & Beyond Club Mix
Cosmic Gate Vocal Mix
Armin van Buuren Remix
Above & Beyond Extended Club Mix
Maor Levi Extended Mix
gardenstate Extended Mix
RYDEX Remix
Extended Mix
Stratos Kokotas Extended Mix
Niko Zografos Extended Remix
Simon Bostock Remix
Extended Mix
Extended Mix
Original Mix
Cold Blue Extended Remix
Extended Mix
Original Mix
Original Mix
Extended Mix
Extended Mix
Judah Remix
Extended Mix
Extended Mix
Original Mix
Hybrid's Supersonic Remix
Original Mix
Extended Mix
Activa Extended Rework
DJ Version
Extended Version
Original Mix
Extended Tech Mix
Original Mix
Original Mix
Extended Mix
Talla 2XLC Extended Remix
Extended Mix
Extended Mix
Extended Mix
Extended Mix
Extended Mix
Extended Mix
Audien Remix
Extended Mix
Original Mix
Original Mix
"""#
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