#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "(?mx)(?<!\\) # negative look-behind to make sure start is not escaped " & @CRLF & _
"(?: # start non-capture group for all possible match starts" & @CRLF & _
" # group 1, match dollar signs only " & @CRLF & _
" # single or double dollar sign enforced by look-arounds" & @CRLF & _
" ((?<!\$)\${1,2}(?!\$))|" & @CRLF & _
" # group 2, match escaped parenthesis" & @CRLF & _
" (\\\()|" & @CRLF & _
" # group 3, match escaped bracket" & @CRLF & _
" (\\\[)| " & @CRLF & _
" # group 4, match begin equation" & @CRLF & _
" (\\begin\{equation\})" & @CRLF & _
")" & @CRLF & _
"# if group 1 was start" & @CRLF & _
"(?(1)" & @CRLF & _
" # non greedy match everything in between" & @CRLF & _
" # group 1 matches do not support recursion" & @CRLF & _
" (.*?)(?<!\\)" & @CRLF & _
" # match ending double or single dollar signs" & @CRLF & _
" (?<!\$)\1(?!\$)| " & @CRLF & _
"# else" & @CRLF & _
"(?:" & @CRLF & _
" # greedily and recursively match everything in between" & @CRLF & _
" # groups 2, 3 and 4 support recursion" & @CRLF & _
" (.*(?R)?.*)(?<!\\)" & @CRLF & _
" (?:" & @CRLF & _
" # if group 2 was start, escaped parenthesis is end" & @CRLF & _
" (?(2)\\\)| " & @CRLF & _
" # if group 3 was start, escaped bracket is end" & @CRLF & _
" (?(3)\\\]| " & @CRLF & _
" # else group 4 was start, match end equation" & @CRLF & _
" \\end\{equation\}" & @CRLF & _
" )" & @CRLF & _
"))))"
Local $sString = "sdfUma corda possui um movimento descrito pela seguinte função de onda: $$ y(x,t) = #x1# \,\hbox{sen}(\frac{\pi}{6}\, x)\,\sin(#x2# t)\,,\;\;\hbox{com x e y em cm e t indo de 0 s a 10 s.} $$ A respeito deste movimento, alguém afirma: (i) $d$ A velocidade inicial de todos os pontos da corda é zero; (ii) A rapidez máxima de um ponto da corda é #f1# cm/s; (iii) O ponto da corda com $x=3$ cm não se move em nenhum instante.\[sdf \] \begin{equation} sdfsdfsd \end{equation}" & @CRLF & _
"Escolha essa função" & @CRLF & _
"$$Isso é um teste$$" & @CRLF & _
"" & @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