import Foundation
let pattern = #"(^|(?<=\n))([0-2]\d{1}:[0-5]\d{1}:[0-5]\d{1}\.\d{3}) --> ([0-2]\d{1}:[0-5]\d{1}:[0-5]\d{1}\.\d{3})(.*?)((?=[0-2]\d{1}:[0-5]\d{1}:[0-5]\d{1}\.\d{3})|$)"#
let regex = try! NSRegularExpression(pattern: pattern, options: .dotMatchesLineSeparators)
let testString = #"""
00:00:34.355 --> 00:00:36.635
Бублики! Купите горячии бублики!
00:00:37.315 --> 00:00:40.315
Ты что сделал, подлец?! Все ботинки мне изгадил!
00:00:40.995 --> 00:00:42.155
Пошел вон!
00:00:42.275 --> 00:00:46.875
Ваше благородие, да бросьте вы этого дурака!
Идите до сюда, зараз все исправим.Давайте.
00:00:48.275 --> 00:00:49.715
На, чисть быстро.
00:00:49.915 --> 00:00:57.715
Один момент. Такие сапоги перемазали, мама родная!
У меня вакса-то германская, фирма "Лавалин".
00:00:57.915 --> 00:01:00.755
Не вакса, а масло просто, хоть на хлеб мажь.
00:01:01.795 --> 00:01:02.875
Чисть, чисть.
00:01:04.195 --> 00:01:05.315
Ой. Ваше благородие
00:01:05.875 --> 00:01:06.955
Что с тобой?
00:01:07.475 --> 00:01:08.875
Живот прихватило… Не могу..
00:01:09.035 --> 00:01:10.355
Ты куда? Иди сюда
00:01:10.635 --> 00:01:12.035
По нужде, ваше благородие!
00:01:14.915 --> 00:01:18.355
А помнишь погром на Дальницкой? Дракон чертов
00:01:30.595 --> 00:01:33.035
Или это я не знаю какая бывает жизнь?
00:01:36.915 --> 00:01:39.955
Нас родила мама. Так же как и вас
00:01:41.435 --> 00:01:46.195
Эта женщина - наша мама - хотела чтоб мы жили,
00:01:46.235 --> 00:01:48.035
а не мучались
00:01:48.395 --> 00:01:50.955
Она хотела чтоб мы жили хорошо
00:01:51.835 --> 00:01:55.515
и она была права,
как может быть права только наша мама...
00:01:57.275 --> 00:02:00.555
А Вы говорите, я не знаю, какая бывает жизнь...
00:02:16.755 --> 00:02:18.395
Стой! Стоп!
"""#
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