import Foundation
let pattern = #"(?:DHI?-)?(?:IPC|HAC)-HDB?W\d+[A-Z]+\K(?:P-0\d{1,2}|P)"#
let regex = try! NSRegularExpression(pattern: pattern)
let testString = #"""
DH-HAC-HDBW3802EP-Z
DH-HAC-HDBW3802EP-ZH
DH-HAC-HDW1000MP-028
DH-HAC-HDW1000RP-028
DH-HAC-HDW1100EMP-02
DH-HAC-HDW1100EMP-03
DH-HAC-HDW1100MP
DH-HAC-HDW1100MP-036
DH-HAC-HDW1100RP-028
DH-HAC-HDW1100RP-VF
DH-HAC-HDW1100AP-028
DH-HAC-HDW1100AP-036
DH-HAC-HDW1100AP
DH-HAC-HDW1100BP-028
DH-HAC-HDW1100BP-036
DH-HAC-HDW1100BP
DH-HAC-HDW1100CP-
DH-HAC-HDW1100DP-036
DH-HAC-HDW1100DP-
DH-HAC-HDW1100EMP-03
DH-HAC-HDW1100EMP-02
DH-HAC-HDW1100EMP-
DH-HAC-HDW1100EP-036
DH-HAC-HDW1100EP-028
DH-HAC-HDW1100EP-03
DH-HAC-HDW1100EP-02
DH-HAC-HDW1100EP-
DH-HAC-HDW1100EP
DH-HAC-HDW1100FP-03
DH-HAC-HDW1100FP-02
DH-HAC-HDW1100FP-
DH-HAC-HDW1100FP
DH-HAC-HDW1100RMP-03
DH-HAC-HDW1100RMP-02
DH-HAC-HDW1100RMP-
DH-HAC-HDW1100RMP
DH-HAC-HDW1100RP-028
DH-HAC-HDW1100RP-036
DH-HAC-HDW1100RP-
DH-HAC-HDW1100RP
DH-HAC-HDW1100SP-036
DH-HAC-HDW1100SP-028
DH-HAC-HDW1100SP-
DH-HAC-HDW1100SP
DH-HAC-HDW1100SLP-03
DH-HAC-HDW1100TP-
DH-HAC-HDW1100MP-036
DH-HAC-HDW1100MP-028
DH-HAC-HDW1100MP
"""#
let stringRange = NSRange(location: 0, length: testString.utf16.count)
let substitutionString = #""#
let result = regex.stringByReplacingMatches(in: testString, range: stringRange, withTemplate: substitutionString)
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