import Foundation
let pattern = #"(?=\/\*!BANNERSTART)(?!BANNEREND\*\/(?:\\n){0,2})[\s\S]*?"#
let regex = try! NSRegularExpression(pattern: pattern, options: [.anchorsMatchLines, .caseInsensitive])
let testString = #"""
/*!BANNERSTART
|==============================================================================
| Информация о дистрибутиве : Freshbroccoli
|==============================================================================
|
| Версия: 0.0.1
| Лицензия: ISC
| Описание: Свежий, переосмысленный сайт Freshbroccoli
| Компания: ООО БРОККОЛИ
| Локация: Россия, Москва, 2-я Звенигородская 13/43
| Email: info@freshbroccoli.ru
| Телефон: +7(495)108-07-98
| Файл изменен: Thu Mar 23 2017 17:09:03 GMT+0300 (MSK)
|
|------------------------------------------------------------------------------
|
| Автор: Андрей Дьяченко (Front-end разработчик)
| Локация: Россия, Москва
| Email: a.dyachenko@freshbroccoli.ru
| Skype: tux_will
|
|==============================================================================
BANNEREND*/
/*!BANNERSTART
|==============================================================================
| Информация о дистрибутиве : Freshbroccoli
|==============================================================================
|
| Версия: 0.0.1
| Лицензия: ISC
| Описание: Свежий, переосмысленный сайт Freshbroccoli
| Компания: ООО БРОККОЛИ
| Локация: Россия, Москва, 2-я Звенигородская 13/43
| Email: info@freshbroccoli.ru
| Телефон: +7(495)108-07-98
| Файл изменен: Thu Mar 23 2017 17:09:03 GMT+0300 (MSK)
|
|------------------------------------------------------------------------------
|
| Автор: Андрей Дьяченко (Front-end разработчик)
| Локация: Россия, Москва
| Email: a.dyachenko@freshbroccoli.ru
| Skype: tux_will
|
|==============================================================================
BANNEREND*/
"""#
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