import Foundation
let pattern = #"^(.*part).*(POLYPROPYLENE\sHOMOPOLYMER)"#
let regex = try! NSRegularExpression(pattern: pattern, options: .caseInsensitive)
let testString = ##" (CRE8 RXN LIGHT R) (CRE8 RXN WHITE ME) (MOUTHFEEL CREAM FLAVOR) .. 1 CATERPILLAR TRACTOR PARTS 1 NYLOK NUTS, TREE CLIP, 1 PLASTIC TUBING 1 POLYPROPYLENE HOMOPOLYMER 1 SLAC: ABRASIVE MATERIAL 1 STC: INDIAN TAN LACE BACKS 11 SHIPPER'S LOAD AND COUNT 2 AUTO PARTS 29 PLYWOOD & HANGING BAR 4 SACK PAPER US05 18 INCH 5 SLAC: ABRASIVE MATERIAL 5 SLAC:13 SACK PAPER US05 18 61 SACK PAPER US05 20 INCH 7 AUTO PARTS 8544.20 AES X20160114804751 AES X20160114821615 AES X20160121191181 AES X20160122257543 AES X20160122274102 AES X20160126421765 AES X20160126421789 AES X20160127481907 AES X20160127508512 CASES COMMODITY CODE : AES X20160 CONTAINER GLOVES HS CODE 4821.90 8517.70 HS CODE: 3917.32.0000 HS CODE: 7318.16.0000 HS CODE: 8412.21 INVOICE NO: 358672 MSO NO: 3579782 NOEEI 30.37(A) NON-HAZ PACKAGE MATERIALS FOR BASEBALL PACKAGES 1 X 40HQ SHIPPER OWNED PALLET PALLET CYLINDER PALLET SLAC 17 BOXES ON 1 PLT PALLET TAPE PALLETS AES X20160114844193 PALLETS HS CODE:7907.00 PALLETS INCH USNU PO# 4550051601 SKIDS HS CODE: 8708.29 SLAC 58 BOXES ON 1 PLT TELECOM EQUIPMENT USNU"##
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