import Foundation
let pattern = #"FieldName=["'](.*?)["']"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
<dataGridWrapper:DataGridWrapperColumn FieldName="DateEcriture" Title="Date" Visible="True" ReadOnly="True" Width="70" AllowSort="False" DisplayFormat="dd/MM/yyyy"/>
<dataGridWrapper:DataGridWrapperColumn FieldName="CodeJournal" Title="Jrl" Visible="True" ReadOnly="True" Width="50" AllowSort="False" />
<dataGridWrapper:DataGridWrapperColumn FieldName="NoPiece" Title="N° Pièce" Visible="True" ReadOnly="True" Width="60" AllowSort="False" />
<dataGridWrapper:DataGridWrapperColumn FieldName="LibelleEcriture" Title="Libellé" Visible="True" ReadOnly="True" Width="180" AllowSort="False" />
<dataGridWrapper:DataGridWrapperColumn FieldName="Debit" Title="Débit" Visible="True" ReadOnly="True" Width="80" AllowSort="False" />
<dataGridWrapper:DataGridWrapperColumn FieldName="Credit" Title="Crédit" Visible="True" ReadOnly="True" Width="80" AllowSort="False" />
<dataGridWrapper:DataGridWrapperColumn FieldName="SoldeD" Title="Solde Débit" Visible="True" ReadOnly="True" Width="80" AllowSort="False" />
<dataGridWrapper:DataGridWrapperColumn FieldName="SoldeC" Title="Solde Crédit" Visible="True" ReadOnly="True" Width="80" AllowSort="False" />
<dataGridWrapper:DataGridWrapperColumn FieldName="Lettrage" Title="Lettrage" Visible="True" ReadOnly="True" Width="40" AllowSort="False" />
<dataGridWrapper:DataGridWrapperColumn FieldName="LibellePrestation" Title="Prestation" Visible="True" ReadOnly="True" Width="80" AllowSort="False" />
<dataGridWrapper:DataGridWrapperColumn FieldName="EtatPiece" Title="Etat" Visible="True" ReadOnly="True" Width="30" AllowSort="False" />
<dataGridWrapper:DataGridWrapperColumn FieldName="NomResidence" Title="Résidence" Visible="True" ReadOnly="True" Width="85" AllowSort="False" />
<dataGridWrapper:DataGridWrapperColumn FieldName="IDEcriture" Title="IDEcriture" Visible="False" ReadOnly="True" Width="60" AllowSort="False" />
<dataGridWrapper:DataGridWrapperColumn FieldName="IDImmeuble" Title="IDImmeuble" Visible="False" ReadOnly="True" Width="60" AllowSort="False" />
<dataGridWrapper:DataGridWrapperColumn FieldName="IDMandat" Title="IDMandat" Visible="False" ReadOnly="True" Width="60" AllowSort="False" />
<dataGridWrapper:DataGridWrapperColumn FieldName="NoAvisEcheance" Title="N° Echeance" Visible="False" ReadOnly="True" Width="60" AllowSort="False" />
<dataGridWrapper:DataGridWrapperColumn FieldName="NoFacture" Title="N° Facture" Visible="False" ReadOnly="True" Width="60" AllowSort="False" />
<dataGridWrapper:DataGridWrapperColumn FieldName="NoFolio" Title="N° Folio" Visible="False" ReadOnly="True" Width="60" AllowSort="False" />
<dataGridWrapper:DataGridWrapperColumn FieldName="NoLigne" Title="N° Ligne" Visible="False" ReadOnly="True" Width="60" AllowSort="False" />
<dataGridWrapper:DataGridWrapperColumn FieldName="NumMandant" Title="N° Mandat" Visible="False" ReadOnly="True" Width="60" AllowSort="False" />
<dataGridWrapper:DataGridWrapperColumn FieldName="Pointage" Title="Pointage" Visible="False" ReadOnly="True" Width="60" AllowSort="False" />
<dataGridWrapper:DataGridWrapperColumn FieldName="MarqueeCRG" Title="MarqueeCRG" Visible="False" ReadOnly="True" Width="60" AllowSort="False" />
<dataGridWrapper:DataGridWrapperColumn FieldName="MarqueeNoLot" Title="MarqueeNoLot" Visible="False" ReadOnly="True" Width="80" AllowSort="False" />
"""#
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