#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "(?m)(?si)m_dwErrorCode\s*=\s*(?<code>\dx\d+);\s*_stprintf\(.*?\(.*?\((?<description>.*?)\).*?;\s*m_dwOutError\s*=\s*(?<error>[\w_]+);\s*m_OutSeverity\s*=\s*(?<severity>[\w_]+)"
Local $sString = "m_dwErrorCode = 0; " & @CRLF & _
"m_dwOutError = HOP_OK; " & @CRLF & _
"m_OutSeverity = CCC_INFORMATION; " & @CRLF & _
"_stprintf(m_OutDevStr, _T(""));" & @CRLF & _
"if (0x00000000 & value)" & @CRLF & _
"{" & @CRLF & _
" " & @CRLF & _
" m_dwErrorCode = 0x0;" & @CRLF & _
" /* Ready state. */" & @CRLF & _
" // m_StatusStr = " Ready(eSTATUS_READY)";" & @CRLF & _
"}" & @CRLF & _
"if (0x00000001 & value)" & @CRLF & _
"{" & @CRLF & _
" m_bProceeding = true;" & @CRLF & _
" /* proceed */" & @CRLF & _
" //m_StatusStr = " Proceeding(eSTATUS)";" & @CRLF & _
"}" & @CRLF & _
"if (0x00002000 & value)" & @CRLF & _
"{" & @CRLF & _
" m_bEmpty = true;" & @CRLF & _
" // We only want to check this error only at certain times." & @CRLF & _
" if (m_bCheckEmpty)" & @CRLF & _
" {" & @CRLF & _
" if ((m_Attributes.dwMediaID == CUBE1) ||" & @CRLF & _
" (m_Attributes.dwMediaID == CUBE2) ||" & @CRLF & _
" /*(m_Attributes.dwMediaID == SCALLOPED) ||*/ // Added" & @CRLF & _
" (m_Attributes.dwMediaID == FOLDED))" & @CRLF & _
" {" & @CRLF & _
"" & @CRLF & _
" m_dwErrorCode = 0x00002000;" & @CRLF & _
" _stprintf(m_OutDevStr, _T("0x1000 - %s(MP Tray Empty)"), errorStr);" & @CRLF & _
" m_dwOutError = HOP_TRAY_EMPTY;" & @CRLF & _
" m_OutSeverity = CCC_INFORMATION;" & @CRLF & _
" }" & @CRLF & _
" }" & @CRLF & _
" //HOP_TRAY_EMPTY" & @CRLF & _
" ///* MSI empty. */" & @CRLF & _
" //m_bTrayEmpty = true;" & @CRLF & _
" //// m_StatusStr = " MSI empty(eSTATUS_MSI_EMPTY)";" & @CRLF & _
"}" & @CRLF & _
"if (0x00004000 & value)" & @CRLF & _
"{" & @CRLF & _
" /* empty. */" & @CRLF & _
" m_dwErrorCode = 0x4000;" & @CRLF & _
" _stprintf(m_OutDevStr, _T("0x4000 - %s(Tray 1 empty)"), errorStr);" & @CRLF & _
" m_dwOutError = HOP_TRAY_01_EMPTY;" & @CRLF & _
" m_OutSeverity = CCC_INFORMATION;" & @CRLF & _
"}" & @CRLF & _
"if (0x00008000 & value)" & @CRLF & _
"{" & @CRLF & _
" /* Tray 2 empty. */" & @CRLF & _
" m_dwErrorCode = 0x8000;" & @CRLF & _
" _stprintf(m_OutDevStr, _T("0x8000 - %s(Tray 2 empty)"), errorStr);" & @CRLF & _
" m_dwOutError = HOP_TRAY_02_EMPTY;" & @CRLF & _
" m_OutSeverity = CCC_INFORMATION;" & @CRLF & _
"}" & @CRLF & _
"if (0x00010000 & value)" & @CRLF & _
"{" & @CRLF & _
" /* Tray 3 empty. */" & @CRLF & _
" m_dwErrorCode = 0x10000;" & @CRLF & _
" _stprintf(m_OutDevStr, _T("0x10000 - %s(Tray 3 empty)"), errorStr);" & @CRLF & _
" m_dwOutError = HOP_TRAY_03_EMPTY;" & @CRLF & _
" m_OutSeverity = CCC_INFORMATION;" & @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