re = /(?:DHI?-)?(?:IPC|HAC)-HDB?W\d+[A-Z]+\K(?:P-0\d{1,2}|P)/
str = '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
'
subst = ''
result = str.gsub(re, subst)
# Print the result of the substitution
puts 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 Ruby, please visit: http://ruby-doc.org/core-2.2.0/Regexp.html