import Foundation
let pattern = #""(?<VoNo>[^"]*)";"(?<VoDt>[^"]*)";"(?<ValDt>[^"]*)";"(?<VoTp>[^"]*)";"(?<Txt>[^"]*)";"(?<DbAcNo>[^"]*)";"(?<DbTrnCl>[^"]*)";"(?<DbTxCd>[^"]*)";"(?<CrAcNo>[^"]*)";"(?<CrTrnCl>[^"]*)";"(?<CrTxCd>[^"]*)";"(?<Am>[^"]*)";"(?<InvoNo>[^"]*)";"(?<DueDt>[^"]*)";"(?<VatAm>[^"]*)";"(?<R1>[^"]*)";"(?<R2>[^"]*)";"(?<R7>[^"]*)";"(?<CID>[^"]*)";"(?<Txt2>[^"]*)";"(?<AGRef>[^"]*)";;"#
let regex = try! NSRegularExpression(pattern: pattern, options: .anchorsMatchLines)
let testString = #"""
@Actor (=CustNo,SupNo,Nm,Ad1,Ad2,Ad3,PNo,PArea,Phone,Fax,MailAd,BsNo,BGiro,Ctry,Lang,Cur,CPmtTrm,SPmtTrm)
"10458";"0";"Vesterlandet GÂrd / D. Hansen";"Vesterlandet 226";"";"";"8407";"Sortland";"";"";"vesterlandetgaard@gmail.com";"926967878";"";"47";"47";"";"15";"15"
@IMPORT_METHOD(3)
@WaBnd (ValDt, SrcTp, Descr)
"20240326" "12" "Quick3 Import"
@WaVo (VoNo,VoDt,ValDt,VoTp,Txt,DbAcNo,DbTrnCl,DbTxCd,CrAcNo,CrTrnCl,CrTxCd,Am,InvoNo,DueDt,VatAm,R1,R2,R7,CID,Txt2,AGRef)
"100489";"20240326";"20240326";"11";"Utg.faktura";"10458";"0";"0";"0";"0";"0";"33818.00";"100489";"20240405";"";"";"";"";"001045801004890";"";"";;
"100489";"20240326";"20240326";"11";"Utg.faktura";"0";"0";"0";"7740";"0";"0";"0.50";"";"";"";"";"";"";"";"";"";;
"100489";"20240326";"20240326";"11";"Utg.faktura";"0";"0";"0";"3000";"0";"3";"30937.50";"";"";"";"1";"";"";"";"";"";;
"100489";"20240326";"20240326";"11";"Utg.faktura";"0";"0";"0";"3001";"0";"3";"2880.00";"";"";"";"1";"";"";"";"";"";;
"""#
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