import Foundation
let pattern = #"googletag\.defineSlot.*?'([^']*)'\);"#
let regex = try! NSRegularExpression(pattern: pattern)
let testString = #"""
googletag.defineSlot('Lorem1', [300, 100], 'div-ad-1430201576110-0');
googletag.defineSlot('Lorem2', [300, 100], 'div-ad-1442774220958-0');
googletag.defineSlot('Lorem3', [300, 100], 'div-ad-1448024965037-0');
googletag.defineSlot('Lorem4', [290, 60], 'div-ad-1429688274462-0');
googletag.defineSlot('Lorem5', [300, 200], 'div-ad-1448279284710-0');
googletag.defineSlot('Lorem6', [728, 90], 'div-ad-1389610933954-2');
googletag.defineSlot('Lorem7', [728, 90], 'div-ad-1389610933954-4');
googletag.defineSlot('Lorem8', [300, 250], 'div-ad-1389610933954-0');
googletag.defineSlot('Lorem9', [300, 250], 'div-ad-1448278717664-0');
googletag.defineSlot('Lorem10',[300, 250] 'div-ad-1425381569546-1');
googletag.defineOutOfPageSlot('Lorem11','div-ad-1424524422308-0-oop1');
googletag.defineOutOfPageSlot('Lorem12','div-ad-1424524422308-0-oop2');
googletag.defineOutOfPageSlot('Lorem13','div-ad-1389610933954-0-oop4');
googletag.defineOutOfPageSlot('Lorem14','div-ad-1389610933954-0-oop5');
googletag.defineOutOfPageSlot('Lorem15','div-ad-1389610933954-0-oop6');
"""#
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