#include <MsgBoxConstants.au3> ; to declare the Constants of MsgBox
Local $sRegex = "(?:\A|;)(?:\s*)((?:%macro |%inc(?:lude)?\b|data |proc )[^;]+)"
Local $sString = "%macro foo;" & @CRLF & _
" %inc "foo.sas";" & @CRLF & _
"%mend;" & @CRLF & _
"" & @CRLF & _
"%macro mylogit1(all_deps, outest);" & @CRLF & _
" %let k=1;" & @CRLF & _
" %let dep = %scan(&all_deps, &k);" & @CRLF & _
" %do %while("&dep" NE "");" & @CRLF & _
" title "dependent variable is &dep";" & @CRLF & _
" proc logistic data=xxx des outest=_est&k;" & @CRLF & _
" model &dep = ind1 ind2;" & @CRLF & _
" run;" & @CRLF & _
" %let k = %eval(&k + 1);" & @CRLF & _
" %let dep = %scan(&all_deps, &k);" & @CRLF & _
" %end;" & @CRLF & _
" %if "&outest" NE "" %then " & @CRLF & _
" %do;" & @CRLF & _
" data &outest;" & @CRLF & _
" set " & @CRLF & _
" %do i = 1 %to &k - 1;" & @CRLF & _
" _est&i" & @CRLF & _
" %end; " & @CRLF & _
" ;" & @CRLF & _
" run; " & @CRLF & _
" %let k = %eval(&k - 1);" & @CRLF & _
" proc datasets;" & @CRLF & _
" delete _est1 - _est&k;" & @CRLF & _
" run;" & @CRLF & _
" %end;" & @CRLF & _
" %else " & @CRLF & _
" %do;" & @CRLF & _
" %put no dataset name was provided, files are not combined;" & @CRLF & _
" %end;" & @CRLF & _
"%mend;" & @CRLF & _
"%mylogit1(v1 v2 v3);" & @CRLF & _
"" & @CRLF & _
"%mylogit1(v1 v2 v3, a);" & @CRLF & _
"proc print data = a;" & @CRLF & _
" var intercept ind1 ind2;" & @CRLF & _
"run;" & @CRLF & _
""
Local $sSubst = ""
Local $sResult = StringRegExpReplace($sString, $sRegex, $sSubst)
MsgBox($MB_SYSTEMMODAL, "Result", $sResult)
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