import Foundation
let pattern = #"((\d|:)+)\s(.+)"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
0:08 Waltz No. 2 (Dmitri Shostakovitch)
4:01 Dance of the Knights (Sergei Prokofiev)
9:42 Sabre Dance (Aram Khachaturian)
12:09 1812 Overture Finale (Pyotr Ilyich Tchaikovsky) (My Absolute Favorite One)
15:57 Flight of the Bumblebee "From The Tale of Tsar Sultan" (Nikolai Rimsky-Korsakov)
19:31 Rite of Spring Sacrifical Dance (Igor Stravinsky)
24:09 Piano Concerto No. 2 (Moderato) (Sergei Rachmaninoff)
34:22 Polovtsian Dances "From Prince Igor" (Alexander Borodin)
39:20 Etude Op. 8 No. 12 (Alexander Scriabin)
41:51 Sailors' Dance (Reinhold Gliere)
45:13 Dance of the Sugar Plum Fairy (Pyotr Ilylich Tchaikovsky)
47:46 Piano Concerto No. 1 (Allegro) (Pyotr Ilylich Tchaikovsky)
51:54 Ruslan and Lyudmila Overture (Mikhail Glinka)
54:51 Swan Lake Waltz (Pyotr Ilyich Tchaikovsky)
1:01:47 Dance of the Pagan Monster (Sergei Prokofiev)
1:05:01 Overture from the Children of Captain Grant (Isaak Dunaevsky)
1:08:52 Symphony No. 5 (Allegro Non Troppo) (Dmitri Shostakovitch) (My Favorite One)
1:12:00 Swan Theme (Pyotr Ilyich Tchaikovsky)
1:14:53 Night on Bald Mountain (Modest Mussorgsky)
"""#
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