#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "(?mx)# match a body pattern alone on a line" & @CRLF & _
"^\g<body>$" & @CRLF & _
"" & @CRLF & _
"# we'll use (?<name>...){0} to define the pattern \g<name>" & @CRLF & _
"# without having to match the pattern at the current position" & @CRLF & _
"" & @CRLF & _
"# a body pattern matches" & @CRLF & _
"(?<body>" & @CRLF & _
" # a sequence of" & @CRLF & _
" (?: [^\[\]{}()\n] # non-delimiters" & @CRLF & _
" | \g<parens> # parenthesized pattern" & @CRLF & _
" | \g<square_brackets> # bracketed pattern" & @CRLF & _
" | \g<curly_braces> # braced pattern" & @CRLF & _
" )*" & @CRLF & _
"){0}" & @CRLF & _
"" & @CRLF & _
"# a parenthesized pattern matches" & @CRLF & _
"(?<parens>" & @CRLF & _
" \( # an open paren" & @CRLF & _
" \g<body> # a valid body" & @CRLF & _
" \) # a close paren" & @CRLF & _
"){0}" & @CRLF & _
"" & @CRLF & _
"# a bracketed pattern matches" & @CRLF & _
"(?<square_brackets>" & @CRLF & _
" \[ # an open square bracket" & @CRLF & _
" \g<body> # a valid body" & @CRLF & _
" \] # a close square bracket" & @CRLF & _
"){0}" & @CRLF & _
"" & @CRLF & _
"# a braced pattern matches" & @CRLF & _
"(?<curly_braces>" & @CRLF & _
" \{ # an open curly brace" & @CRLF & _
" \g<body> # a valid body" & @CRLF & _
" \} # a close curly brace" & @CRLF & _
"){0}"
Local $sString = "matches:" & @CRLF & _
"a plain string" & @CRLF & _
"a string containing (matched parens) [matched brackets] and {matched braces}" & @CRLF & _
"nested (parens (within) parens)" & @CRLF & _
"nested [parens (within) brackets]" & @CRLF & _
"()()[({({[]})[({})]})]" & @CRLF & _
"" & @CRLF & _
"non-matches:" & @CRLF & _
"(unbalanced parens" & @CRLF & _
"([balanced but misordered)]"
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