#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "(?ms)^\s*(enum[^{]*)\s*({)\s*([^}]+)\s*(};)"
Local $sString = "#include <iostream>" & @CRLF & _
" " & @CRLF & _
"// enum that takes 16 bits" & @CRLF & _
"enum smallenum: int16_t" & @CRLF & _
"{" & @CRLF & _
" a," & @CRLF & _
" b," & @CRLF & _
" c" & @CRLF & _
"};" & @CRLF & _
" " & @CRLF & _
" " & @CRLF & _
"// color may be red (value 0), yellow (value 1), green (value 20), or blue (value 21)" & @CRLF & _
"enum color" & @CRLF & _
"{" & @CRLF & _
" red," & @CRLF & _
" yellow," & @CRLF & _
" green = 20," & @CRLF & _
" blue" & @CRLF & _
"};" & @CRLF & _
" " & @CRLF & _
"// altitude may be altitude::high or altitude::low" & @CRLF & _
"enum class altitude: char" & @CRLF & _
"{ " & @CRLF & _
" high='h'," & @CRLF & _
" low='l', // C++11 allows the extra comma" & @CRLF & _
"}; " & @CRLF & _
" " & @CRLF & _
"// the constant d is 0, the constant e is 1, the constant f is 3" & @CRLF & _
"enum" & @CRLF & _
"{" & @CRLF & _
" d," & @CRLF & _
" e," & @CRLF & _
" f = e + 2" & @CRLF & _
"};" & @CRLF & _
" " & @CRLF & _
"//enumeration types (both scoped and unscoped) can have overloaded operators" & @CRLF & _
"std::ostream& operator<<(std::ostream& os, color c)" & @CRLF & _
"{" & @CRLF & _
" switch(c)" & @CRLF & _
" {" & @CRLF & _
" case red : os << "red"; break;" & @CRLF & _
" case yellow: os << "yellow"; break;" & @CRLF & _
" case green : os << "green"; break;" & @CRLF & _
" case blue : os << "blue"; break;" & @CRLF & _
" default : os.setstate(std::ios_base::failbit);" & @CRLF & _
" }" & @CRLF & _
" return os;" & @CRLF & _
"}" & @CRLF & _
" " & @CRLF & _
"std::ostream& operator<<(std::ostream& os, altitude al)" & @CRLF & _
"{" & @CRLF & _
" return os << static_cast<char>(al);" & @CRLF & _
"}" & @CRLF & _
" " & @CRLF & _
"int main()" & @CRLF & _
"{" & @CRLF & _
" color col = red;" & @CRLF & _
" altitude a;" & @CRLF & _
" a = altitude::low;" & @CRLF & _
" " & @CRLF & _
" std::cout << "col = " << col << '\n'" & @CRLF & _
" << "a = " << a << '\n'" & @CRLF & _
" << "f = " << f << '\n';" & @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