import Foundation
let pattern = #"(href|src|source|retinaSource|data)=(["|'][^"']*assets[^"']*\.\w{1,5})(\?[^"']*)?["|']"#
let regex = try! NSRegularExpression(pattern: pattern, options: .caseInsensitive)
let testString = ##"""
<a href="javascript://" class="btn btn-continue-operation disabled">
<span>Continuar</span>
</a>
<a href='javascript://" class="btn btn-continue-operation disabled'>
<span>Continuar</span>
</a>
<ul class="footer-legal l-adjacent-list">
<li><a href="#external-content//genoma_transactional/cms_files/corporativo/seguridad-internet/index_transaccional.html" class="footer-legal-element clr-gray.html">{security}</a></li>
<li><a href='#external-content//genoma_transactional/cms_files/corporativo/sobre-ing/condiciones-servicio-tarifa_transaccional.html' class="footer-legal-element clr-gray">{link-legal-info-footer}</a></li>
</ul>
<link type="text/css" href=" assets/custom-css /infobolsa
.css" rel="stylesheet" media="all" charset="utf-8">
<div class="fingerprint-views-storage-content-img txt-c">
{>pp-image imageId="fingerprint-activation" altText="fingerprint-activation"
source="assets/images/fingerprint-activation.png"
retinaSource="assets/images/retina/fingerprint-activation@2x.png"/}
</div>
<img src="modules/cc-menu/assets/images/logo_cc.svg" alt="Components catalog">
<img src="assets/images/twyp_cash_circle.svg?query=34"> <img src="assets/ircle.svg?hgt=76">
{>pp-image imageId="budgets-tutorial-client-step3" altText="budget-tutorial-step3"
source="components/budgets-tutorial/ASSETS/images/budgets-tutorial-client-step3.png" {>pp-image imageId="budgets-tutorial-client-step3" altText="budget-tutorial-step3"
source="components/budgets-tutorial/ASSETS/images/budgets-tutorial-client-step3.png"
{>pp-image source="assets/images/svg/logoING.svg"/}
<div data-selector="logo-ing" class="padding-top-sm padding-left-sm pull-left">
<img id="logo" src="assets/images/svg/logoING.svg" class="img-svg svg-header-logo login-header">
</div>
<audio data-selector="customer-connected-audio">
<source src="modules/remote-advisor-agent/assets/audio/incomingCall.mp3" type="audio/mp3"/>
</audio>
<div class="col9">
<div class="declaration-image-div">{>pp-svg-image:no-products-other-bank imageId="declaration-image" source="./assets/images/life-insurance-contract/cuestionario_riesgos.svg"/}</div>
<p class="h5 clr-dark-gray lic-declaration-remark">{lic-risk-declaration-remark|s}</p>
</div>
<div data-region-id="login-dnie-image" class="login-dnie-image"><img src="assets/images/dni-logo.png"/></div>
"""##
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