import Foundation
let pattern = #"(?P<group>(?P<starttag><(?P<tagname>p)[^>]*>)(?P<data>.*)(?P<endtag><\/\3>))"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
<p>COVEMA</p>
<p>PALMERO</p>
<p>PLASTIFERRO</p>
<p>UOCRA</p>
<p>REPAS</p>
<p>BTU</p>
<p>PANEDILE</p>
<p>ELEPRINT</p>
<p>JOSÉ J. CHEDIACK</p>
<p>NIRO CONSTRUCCIONES</p>
<p>HELPORT</p>
<p>BISCAYNE</p>
<p>COARCO</p>
<p>ESUCO</p>
<p>CPC</p>
<p>TEL 3</p>
<p>CARTELLONE</p>
<p>MACRO</p>
<p>VIAL AGRO</p>
<p>ISOLUX CORSÁN</p>
<p>AFCP</p>
<p>FINNING</p>
<p>ROGGIO</p>
<p>ROVELLA CARRANZA</p>
<p>ACINDAR</p>
<p>IERIC</p>
<p>IGARRETA MÁQUINAS</p>
<p>RIVA</p>
<p>GRUPO ESTISOL</p>
<p>IECSA</p>
<p>ARMAFERRO</p>
<p>BRICONS</p>
<p>CNH INDUSTRIAL</p>
<p>PAOLINI</p>
<p>SERVIUR</p>
<p>SANDVIK</p>
<p>DECAVIAL</p>
<p>ODEBRECHT</p>
<p>ENAS</p>
<p>SITRA</p>
<p>SUPERCEMENTO</p>
<p>JCR</p>
<p>CONSTRUMEX</p>
<p>BRIALES</p>
<p>CAPUTO</p>
<p>LUCIANO</p>
<p>GALICIA</p>
<p>VICTOR CONTRERAS</p>
<p>SIKA ARGENTINA</p>
<p>CRIBA</p>
<p>BOETTO Y BUTTIGLIENGO</p>
<p>MILICIC</p>
<p>PERIODICO EL CONSTRUCTOR</p>
<p>PHONERENTAL</p>
<p>DOS ARROYOS</p>
<p>MARTINEZ Y DE LA FUENTE</p>
<p>AUSA</p>
<p>LUIS LOSI</p>
<p>AESA</p>
<p>CONSTRUCTORA SUDAMERICANA</p>
<p>PLANTEL</p>
<p>PCR</p>
<p>BANCO DE LA NACIÓN ARGENTINA</p>
<p>SUBTERRÁNEOS DE BUENOS AIRES</p>
<p>HOLA SIM</p>
<p>JOSÉ LUIS TRIVIÑO</p>
<p>TECHINT</p>
<p>EDUARDO COLOMBI</p>
<p>ALEMARSA</p>
<p>CENTRO CONSTRUCCIONES</p>
<p>TECNIPISOS</p>
<p>XAPOR</p>
<p>FONTANA NICASTRO</p>
<p>CONCRET-NOR</p>
<p>DYCASA</p>
<p>BURGWARDT</p>
<p>SULLAIR</p>
<p>FONDO FIDUCIARIO FEDERAL DE INFRAESTRUCTURA REGIONAL</p>
<p>FLOWTEX</p>
<p>PETERSEN THIELE Y CRUZ</p>
<p>LIHUÉ</p>
<p>IRAM</p>
<p>ESTUDIO YMAZ</p>
<p>VIDOGAR</p>
<p>BICE</p>
<p>ROMERO CAMMISA</p>
<p>BATIMAT</p>
<p>ALBA CAUCIÓN</p>
<p>PROBA</p>
<p>ICF</p>
<p>TECMA</p>
<p>ALESTE</p>
<p>DELEGACIÓN PROVINCIA DE BUENOS AIRES</p>
<p>HIDRAVIAL</p>
<p>BANCO CIUDAD</p>
<p>LAMANNA</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