import Foundation
let pattern = #"<(span).*?class="\s*(?:.*\s)?target(?:\s[^"]+)?\s*"[^\>]*>(.*)<\/\1>"#
let regex = try! NSRegularExpression(pattern: pattern)
let testString = #"<p><img src=\"https://files.colektia.com/company_logos/1900910.png\"></p><p><br></p><p>Hola <span class=\"mention\" data-mention-id=\"nombre_completo\"><span class=\"mention\" data-mention-id=\"nombre_completo\"><span class=\"mention\" data-mention-id=\"nombre\">@nombre</span>_completo</span></span>,</p><p>Le contactamos para informarle que la cuota de su póliza <strong><span class=\"mention\" data-mention-id=\"referencia\"><span class=\"mention\" data-mention-id=\"referencia\">@referencia</span></span></strong> con BCI Seguros venció el <strong><span class=\"mention\" data-mention-id=\"fecha_vencimiento\"><span class=\"mention\" data-mention-id=\"fecha_vencimiento\">@fecha_vencimiento</span></span>.</strong></p><p>Puede regularizar el pago a través de las siguientes alternativas:</p><ol><li><p>En línea a través de nuestro portal <a href=\"https://www.bciseguros.cl/pagoenlinea/pagoCuota/\" rel=\"noopener noreferrer nofollow\"><u>www.Bciseguros.cl</u></a></p></li><li><p>Pago en <a href=\"http://www.servipag.cl\" rel=\"noopener noreferrer nofollow\"><u>www.servipag.cl</u></a></p></li><li><p>En Banco BCI, Banco de Chile, Banco Santander o en cualquier sucursal de Servipag a lo largo del país con su estado de cuenta.</p></li><li><p>Sucursales de BCI Seguros a lo largo del país.</p></li></ol><p>Atentamente,</p><p><em>Subgerencia de Cobranzas y Medios de Pago</em></p><p><em>Para cualquier consulta, puede comunicarse con nosotros al Centro de Respuesta Inmediata (CRI), desde teléfono fijo al 600 6000 292 o desde celulares al 22 6799700. pruebaaaaaa </em><span class=\"mention\" data-mention-id=\"monto\"><span class=\"mention\" data-mention-id=\"monto\">@monto</span></span> <span class=\"mention\" data-mention-id=\"moneda\"><span class=\"mention\" data-mention-id=\"moneda\">@moneda</span></span> </p><p><strong>Si al recibo de este correo usted ha regularizado esta situación, le solicitamos dejar sin efecto esta comunicación.</strong></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