#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "[^\\](?:(?:\\{2})*)\$(?:(?:[=|-]?([A-Z0-9_]*[A-Z_]+[A-Z0-9_]*)|(?:{[=|-]?([A-Z0-9_]*[A-Z_]+[A-Z0-9_]*)})))"
Local $sString = "${HAVE_ERROR}" & @CRLF & _
"\\${PATH}" & @CRLF & _
"\\$SHELL" & @CRLF & _
"\\\\${PATH}" & @CRLF & _
"${HTTP_PORT}" & @CRLF & _
"$HTTP_PORT" & @CRLF & _
"$PORT" & @CRLF & _
"$1_PORT" & @CRLF & _
"${1_PORT}" & @CRLF & _
"$PORT_345" & @CRLF & _
"${PORT_345}" & @CRLF & _
"${AZK_AGENT_CONF_FILE}" & @CRLF & _
"${HTTP_HOST_2345}" & @CRLF & _
"${=HTTP_HOST_2345}" & @CRLF & _
"${-HTTP_HOST_2345}" & @CRLF & _
"$ENV.HTTP" & @CRLF & _
"" & @CRLF & _
"# ^ should match" & @CRLF & _
"" & @CRLF & _
"# v should not match" & @CRLF & _
"" & @CRLF & _
"any_text" & @CRLF & _
"LIKE_A_ENV_NAME" & @CRLF & _
"\${PATH}" & @CRLF & _
"\$SHELL" & @CRLF & _
"\ \${PATH}" & @CRLF & _
"\ \$SHELL" & @CRLF & _
"\\\${PATH}" & @CRLF & _
"\\\$SHELL" & @CRLF & _
"$1" & @CRLF & _
"${1}" & @CRLF & _
"$@" & @CRLF & _
"$?" & @CRLF & _
"${env}" & @CRLF & _
"${env.io}" & @CRLF & _
"${ENV" & @CRLF & _
"${ENV_hahaha}" & @CRLF & _
"${ENV.HTTP}" & @CRLF & _
"$envs.HTTP_PORT" & @CRLF & _
"${envs.HTTP_PORT}" & @CRLF & _
"${-net.host}" & @CRLF & _
"${-net.port.http}" & @CRLF & _
"${=net.port.http}" & @CRLF & _
"<%azk.default_domain%>" & @CRLF & _
"<%=manifest.dir%>" & @CRLF & _
"#{-system.name}" & @CRLF & _
"#{=manifest.dir}" & @CRLF & _
"#{azk}" & @CRLF & _
"#{azk.io}" & @CRLF & _
"##hello" & @CRLF & _
"$hello" & @CRLF & _
"%hello%" & @CRLF & _
"<hello>"
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