import Foundation
let pattern = #"(\s{2,})|((?:(?:\/\*(?:[^*]|(?:\*+[^*\/]))*\*+\/)|(?:(?<!\:|\\\|\')\/\/.*)))"#
let regex = try! NSRegularExpression(pattern: pattern)
let testString = ##"""
ar $url = window.location.href;
$url = $url.toLowerCase().replace(/^(http(s)?\:\/\/)/g, ''),
$url = $url.split('/');
var $current_page = $url[$url.length - 1].replace(/(\?.*)?(\#.*)?/g, ''); // Current Page
document.addEventListener('DOMContentLoaded', function() {
if ($current_page === 'index.html') {
if (window.location.hash) {
var $current_hash = window.location.hash.substring(1);
} else {
window.location.hash = '';
}
// Ignore the code above, the important part is right below:
var $fp_imgs = document.querySelectorAll('img.-homepage-poster');
$fp_imgs.forEach(function($fp_img) {
var $imgs = [518966, 518967, 518968, 518969],
$rand = Math.floor($imgs.length * Math.random()),
$xmhr = new XMLHttpRequest();
var response = function($e) {
var $this = this,
$url_creator = window.URL || window.webkitURL,
$image_url = $url_creator.createObjectURL($this.response);
$fp_img.src = $image_url;
}
$xmhr.open('get', '../imgs/' + $imgs[$rand] + '.jpg', true);
$xmhr.responseType = 'blob';
$xmhr.onload = response;
$xmhr.send();
});
}
});
"""##
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