import Foundation
let pattern = #"([hale]*\w*\.?\d*)([\.\/\-_\s]?)([stand]*)(\d+)([a-z]*)"#
let regex = try! NSRegularExpression(pattern: pattern, options: .caseInsensitive)
let testString = #"""
InnoTrans 16 Reinigung 23/705 Vorr./Tägl.
InnoTrans 16 Reinigung 17/113 Vorr./Tägl.
InnoTrans 16 Reinigung 26./141 Vorr./Tägl.
InnoTrans 16 Reinigung 6.2/507 Vorr./Tägl.
trans 4.1/412 vor u tä
Trans 16,23/606, Vor + tägl. Reinigung
Trans 16 10.2/300 Vor-, täglich
FUNK 16 Reinigung 14.1/124 Vorr./Tägl.
STORNO !!!InnoTrans 16 Reinigung 4.2/208a Vorr./Tägl.
Inno 16 Vorr. + tägl. rein. H. 7.2C_305
Inno 16 Vorr. + tägl. Rein. H.17-304
Inno 16 Vorr. + tägl. Rein. H. 17_304
InnoTrans 16 Reinigung CCB A/101 Vorr./Tägl.
InnoTrans 16 Reinigung FGSUED O/553 Reinigung Aufbau+Gl./Tägl.+Gl.
InnoTrans 16 Reinigung FGSUED O/240 Vorr./Tägl.
InnoTrans 16 Reinigung FGSUED O-240 Vorr./Tägl.
InnoTrans 16 Reinigung FGSUED O_240 Vorr./Tägl.
InnoTrans 16 Reinigung FGSUED Ost/240 Vorr./Tägl.
InnoTrans 16 Reinigung FGSUED T10/47 Reinigung nach Stundennachweis
InnoTrans 16 Reinigung FGSUED T10-47 Reinigung nach Stundennachweis
InnoTrans 16 Reinigung FGSUED T10_47 Reinigung nach Stundennachweis
Inno 16 - Storno H.22_808
trans 4.1-412 vor u tä
innotrans 16 reinig tä 21.-205
Inno 16 - Storno H. 22-808
Inno 16 - Storno H.22_808b
Inno 16 - Storno H. 22-808b
Inno 16 - Storno H.22_808
Inno 16 - Storno H.2.1_808
Inno 16 - Storno H.2.1_s808
Inno 16 - Storno H.2.1-S808
Inno 16 - Storno halle2.1_stand808
Inno 16 - Storno Halle2.1_Stand808
Inno 16 - Storno H2.1 S808
Inno 16 - Storno halle 2.1 stand 808
Inno 16 - Storno h2.1 s808
trans 4.1 412 vor u tä
innotrans 16 reinig tä 21. 205
"""#
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