import Foundation
let pattern = #"(\S+)=["']?((?:.(?!["']?\s+(?:\S+)=|[>"']))+.)["']?"#
let regex = try! NSRegularExpression(pattern: pattern)
let testString = #"<p class="s15" style="padding-left: 15pt;text-indent: 0pt;text-align: left;">Impulsora Minera Mexicana, S.A. de C.V. Industrial Minera México, S.A. de C.V. Industrial Minera México, S.A. de C.V. Joaquín Chávez González</p><p class="s15" style="padding-left: 15pt;text-indent: 0pt;line-height: 8pt;text-align: left;">José Luis Ponce Muñoz</p><p class="s15" style="padding-left: 15pt;text-indent: 0pt;text-align: left;">Kimber Resources de México, S.A. de C.V. Mario Alejandro Schaefer Armendariz Mexoro Minerals Ltd.</p><p class="s15" style="padding-left: 15pt;text-indent: 0pt;line-height: 8pt;text-align: justify;">Minas de Almaceña, S.A.</p><p class="s15" style="padding-left: 15pt;text-indent: 0pt;text-align: justify;">Minas de Coronado, S. de R.L. de C.V. Minas de La Alta Pimería, S.A. de C.V. Minera Agua Tierra, S.A. de C.V.</p><p class="s15" style="padding-top: 2pt;padding-left: 15pt;text-indent: 0pt;text-align: left;">Minera Aventureros del Yaqui, S.A. de C.V. Minera Azteca de Oro y Plata, S.A. de C.V. Minera Bismark, S.A. de C.V.</p><p class="s15" style="padding-left: 15pt;text-indent: 0pt;text-align: left;">Minera Cascabel, S.A. de C.V. Minera Delta, S.A. de C.V.</p><p class="s15" style="padding-left: 15pt;text-indent: 0pt;text-align: left;">Minera Hochschild de México, S.A. de C.V. Minera Monterde, S. de R.L. de C.V. Minera Moris, S.A. de C.V.</p><p class="s15" style="padding-left: 15pt;text-indent: 0pt;text-align: left;">Minera Pericones, S.A. de C.V. Minera Plata del Sur, S.A. de C.V. Minera Río Tinto, S.A. de C.V. Minera Sol de Oro, S.A. de C.V. Minera Terrazas, S.A. de C.V. Minera Teutonia, S.A. de C.V. Minera Uruachi, S.A. de C.V. Minerales El Madroño, S.A. de C.V. Minerales Vextar</p><p class="s15" style="padding-left: 15pt;text-indent: 0pt;text-align: left;">Ocampo Mining, S.A. de C.V. Pan American Goldfields Ltd. Panamerican Silver Corp.</p><p class="s15" style="padding-left: 15pt;text-indent: 0pt;text-align: left;">Rodolfo Chávez Rocha Salvador Chávez Ramírez Sierra Metals Inc.</p><p class="s15" style="padding-left: 15pt;text-indent: 0pt;text-align: left;">Sunburst Mining de México, S.A. de C.V. Ternium México, S.A. de C.V.</p><p class="s15" style="padding-left: 15pt;text-indent: 0pt;line-height: 8pt;text-align: left;">Tubería Laguna, S.A. de C.V.</p><p class="s15" style="padding-left: 15pt;text-indent: 0pt;text-align: left;">Tumbstone Exploration de México, S.A. de C.V.</p><p class="s15" style="padding-left: 15pt;text-indent: 0pt;text-align: left;">VVC Exploration de México, S. de R.L. de C.V.</p><p class="s14" style="padding-left: 30pt;text-indent: 0pt;line-height: 10pt;text-align: center;">Ciudad de México</p><p class="s15" style="padding-left: 30pt;text-indent: 0pt;line-height: 9pt;text-align: center;">Aceros Inoxidables y Servicios Industriales,</p><p class="s15" style="padding-left: 15pt;text-indent: 0pt;line-height: 9pt;text-align: left;">S.A. de C.V.</p><p class="s15" style="padding-left: 30pt;text-indent: 0pt;line-height: 9pt;text-align: center;">Aceros Inoxidables y Servicios Industriales,</p><p class="s15" style="padding-left: 15pt;text-indent: 0pt;line-height: 9pt;text-align: left;">S.A. de C.V.</p>"#
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