import Foundation
let pattern = #"(?<=")(?:[A-Z][a-f0-9]{84}|[A-F0-9]{36})(?=")"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
$(document).ready(function() {
vlive.tv.common.init("en", "VE", "5454545");
vlive.video.init("VOD", "45454", "VOD_ON_AIR", "NONE", "54454F",
"6FABE43B271345FFCFA4D2028AF85F80C9F6",
"V1294005a2aac29b64592ce9e636d68fb5506721c2ceac160d67a0488c1d25f3314bace9e636d68fb5506",
[],
"", "true", "false");
new vlive.video.list().init("suggest", "6", "/video/suggest/more", {videoSeq:"454545", channelCode:"54545"}); new vlive.video.list().init("upcoming", "6", "/video/upcoming/more", {videoSeq:"54545", playlistSeq:"", channelCode:"5454545"});
vlive.tv.live.thumb.handler.init("https://vlive-thumb.pstatic.net");
vlive.tv.share.init("Some Title", "https://www.vlive.tv/video/xxxx", "https://v-phinf.pstatic.net/20190811_131/4509495095_JPEG/93e3a15d-bc43-11e9-a12f-5054343_43.jpg?type=a720_play", "shareVod_343434_4455457", "45454");
vlive.video.showShoppingBanner("4544343");
});
"""#
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