import Foundation
let pattern = #"(([A-Za-z_-]*)="(.*?)")"#
let regex = try! NSRegularExpression(pattern: pattern)
let testString = #"""
<DT><A HREF="http://www.tripadvisor.fr/ShowUserReviews-g187849-d646539-r137197174-Hotel_Paradiso-Milan_Lombardy.html" ADD_DATE="1441047526" LAST_MODIFIED="1441047526" ICON_URI="http://static.tacdn.com/favicon.ico" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABE0lEQVQ4jd2QMWrDMBiF36xCblDRniFbyeADVMRDQ3qA9gyeHLp56FI6FEoIZHDJZIM7GfEfoz6A1+4atOR1kY1jXOhY8sNb9Ok9Pf3Af54ZgKug2V9NcwA7AC0AjtQGNh+bXgGkAJ4BHAEwSwzZvpwoS0wXdAx30+BFNPHaScjAPFbUtVhrrSkidM6xrmtqrZklhlliOMUA3A+/8SUilKLkbmkoRUkR6SuLCPNiz9unG+bFvmPNMMA757iNY9aXF9zGMb33BOA7ZjYLXr+BZrMYsn4aay2l+uT76o5SVcMGtNbyUH5wmUY8lPlkg34H3nuKCJVSfYBS6oRN7QDhoAnVGgAPAL6DHkdsPTb/Nqugc54f+w3c0e+99WoAAAAASUVORK5CYII=">Je donnerais un zéro si je pouvais - Avis de voyageurs sur Hotel Paradiso, Milan - TripAdvisor</A>
"""#
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