#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "(?m)^(?P<unit_design>Z)(?P<unit_type>SFW|SF)(?P<unit_size>200|160|125|100|32|40|50|63|80)(?P<mounting_type>F)(?P<decompression_feature>0|1)(?P<sep_1>-)(?P<cracking_pressure>1)(?P<sep_2>-)(?P<unit_series>1X|2X)(?P<sep_3>/)(?P<seal_material>M|V)(?P<sep_4>/)(?P<pipe_port>12|01)(?P<orifice_position>D|)(?P<orifice_diameter>00|08|10|12|15|40|)(?P<additional_details>(.|[0-9])*)$"
Local $sString = "ZSF40F1-1-1X/M/01" & @CRLF & _
"ZSF40F0-1-1X/M/01" & @CRLF & _
"ZSF100F0-1-1X/M/01" & @CRLF & _
"ZSF80F1-1-1X/M/01D00" & @CRLF & _
"ZSF50F1-1-1X/M/01D00" & @CRLF & _
"ZSFW40F1-1-1X/M/01" & @CRLF & _
"ZSF100F1-1-1X/M/01" & @CRLF & _
"ZSFW100F1-1-1X/M/01" & @CRLF & _
"ZSF63F1-1-1X/M/01D00" & @CRLF & _
"ZSF80F0-1-1X/M/01D00" & @CRLF & _
"ZSF50F0-1-1X/M/01D00" & @CRLF & _
"ZSFW50F1-1-1X/M/01" & @CRLF & _
"ZSF40F0-1-1X/M/01SO1" & @CRLF & _
"ZSF63F0-1-1X/M/01D00" & @CRLF & _
"ZSFW80F0-1-1X/M/01" & @CRLF & _
"ZSFW100F0-1-1X/M/01" & @CRLF & _
"ZSFW80F1-1-1X/M/01" & @CRLF & _
"ZSF50F0-1-1X/M/01SO1" & @CRLF & _
"ZSF32F0-1-1X/M/01SO1" & @CRLF & _
"ZSF63F0-1-1X/M/01SO1" & @CRLF & _
"ZSFW160F0-1-1X/M/01" & @CRLF & _
"ZSFW40F0-1-1X/M/01" & @CRLF & _
"ZSFW63F1-1-1X/M/01" & @CRLF & _
"ZSFW63F0-1-1X/M/01" & @CRLF & _
"ZSFW50F0-1-1X/M/01" & @CRLF & _
"ZSF160F1-1-1X/M/01" & @CRLF & _
"ZSFW160F1-1-1X/M/01" & @CRLF & _
"ZSF160F0-1-1X/M/01" & @CRLF & _
"ZSF32F0-1-1X/M/01" & @CRLF & _
"ZSF32F1-1-1X/M/01SO6" & @CRLF & _
"ZSF100F1-1-1X/V/01" & @CRLF & _
"ZSF100F0-1-1X/M/01SO1" & @CRLF & _
"ZSF50F1-1-1X/M/01SO6" & @CRLF & _
"ZSF40F1-1-1X/M/01SO6" & @CRLF & _
"ZSFW32F0-1-1X/M/01" & @CRLF & _
"ZSF32F1-1-1X/M/01" & @CRLF & _
"ZSF80F0-1-1X/M/01SO1" & @CRLF & _
"ZSF80F1-1-1X/M/01SO1" & @CRLF & _
"ZSFW100F1-1-1X/V/01" & @CRLF & _
"ZSFW50F1-1-1X/V/01" & @CRLF & _
"ZSFW32F1-1-1X/M/01" & @CRLF & _
"ZSF160F0-1-1X/V/01" & @CRLF & _
"ZSF125F0-1-2X/M/01" & @CRLF & _
"ZSF125F1-1-2X/M/01" & @CRLF & _
"ZSFW125F1-1-2X/M/01" & @CRLF & _
"ZSFW125F0-1-2X/M/01" & @CRLF & _
"ZSF125F0-1-2X/V/01" & @CRLF & _
"ZSF125F1-1-2X/V/01" & @CRLF & _
"ZSFW125F0-1-2X/V/01" & @CRLF & _
"ZSF125F0-1-2X/M/01SO1" & @CRLF & _
"ZSF100F0-1-1X/V/01" & @CRLF & _
"ZSF63F0-1-1X/V/01D00" & @CRLF & _
"ZSF50F0-1-1X/V/01D00" & @CRLF & _
"ZSFW100F0-1-1X/V/01" & @CRLF & _
"ZSFW63F0-1-1X/V/01" & @CRLF & _
"ZSFW50F0-1-1X/V/01" & @CRLF & _
"ZSF125F1-1-2X/M/01SO6" & @CRLF & _
"ZSF200F0-1-2X/M/01D40" & @CRLF & _
"ZSFW200F0-1-2X/M/01D40" & @CRLF & _
"ZSFW125F1-1-2X/M/01SO6" & @CRLF & _
"ZSFW63F1-1-1X/V/01" & @CRLF & _
"ZSFW40F0-1-1X/V/01" & @CRLF & _
"ZSF160F1-1-1X/M/01SO12" & @CRLF & _
"ZSF125F0-1-2X/M/01SO6" & @CRLF & _
"ZSF160F0-1-1X/M/01SO6" & @CRLF & _
"ZSFW160F0-1-1X/M/01SO12" & @CRLF & _
"ZSF80F0-1-1X/V/01D00" & @CRLF & _
"ZSFW200F0-1-2X/V/01D40" & @CRLF & _
"ZSF100F0-1-1X/M/01SO13" & @CRLF & _
"ZSF125F0-1-2X/M/01SO13" & @CRLF & _
"ZSF125F0-1-2X/M/01SO14" & @CRLF & _
"ZSF63F0-1-1X/M/01D08" & @CRLF & _
"ZSF50F0-1-1X/M/01D08" & @CRLF & _
"ZSF80F0-1-1X/M/01D10" & @CRLF & _
"ZSF160F1-1-1X/M/01SO6" & @CRLF & _
"ZSF32F1-1-1X/M/01D08" & @CRLF & _
"ZSF100F0-1-1X/M/01D10" & @CRLF & _
"ZSF125F0-1-2X/M/01D12" & @CRLF & _
"ZSF160F0-1-1X/M/01D15" & @CRLF & _
"ZSF100F1-1-1X/M/01D10SO6" & @CRLF & _
""
Local $aArray = StringRegExp($sString, $sRegex, $STR_REGEXPARRAYGLOBALFULLMATCH)
Local $aFullArray[0]
For $i = 0 To UBound($aArray) -1
_ArrayConcatenate($aFullArray, $aArray[$i])
Next
$aArray = $aFullArray
; Present the entire match result
_ArrayDisplay($aArray, "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 AutoIt, please visit: https://www.autoitscript.com/autoit3/docs/functions/StringRegExp.htm