#include <StringConstants.au3> ; to declare the Constants of StringRegExp
#include <Array.au3> ; UDF needed for _ArrayDisplay and _ArrayConcatenate
Local $sRegex = "(?m)(?x)(?(DEFINE)" & @CRLF & _
" (?<AutoItString> "(?> [^"]+ | "" )*" # double quoted string" & @CRLF & _
" | " & @CRLF & _
" '(?> [^']+ | '' )*' # single quoted string" & @CRLF & _
" ) # AutoIt string definition" & @CRLF & _
" (?<CommentBlock> (?m) " & @CRLF & _
" ^\h*\# (?>cs|comments-start)\b # start of comment block" & @CRLF & _
" (?sU:(?>(?&CommentBlock)|.)*) # content of comment block (could be nested) " & @CRLF & _
" ^\h*\#(?>ce|comments-end)\b.*\R # end of comment block" & @CRLF & _
" )" & @CRLF & _
" (?<NonComment> (?> (?&AutoItString) | [^\;\r\n])* ) # anything what's not a single comment" & @CRLF & _
" (?<SingleComment> (?m) ^ (?&NonComment)\K\;.*$) # a AutoIt single line comment" & @CRLF & _
" (?<Comment> (?&CommentBlock) | (?&SingleComment) ) # all AutoIt comments" & @CRLF & _
" (?<MultilineCmd> (?>_\h* (?>\;.*$)? [\r\n]*)+) " & @CRLF & _
" (?<FuncName> ([\w_]+)) # function name" & @CRLF & _
" (?<FuncDef> ^\h*Func(?:|\h|(?&MultilineCmd))+ (?&FuncName) (?:\h|(?&MultilineCmd))* (?=\() ) # function definition" & @CRLF & _
" (?<BracketContent> \( (?> (?&BracketContent) | \;.*$ | (?&AutoItString) | \h*(?&MultilineCmd) | [^\;\r\n"'()]* )* \) ) " & @CRLF & _
")" & @CRLF & _
"(?&FuncDef)((?&BracketContent))"
Local $sString = "Func _CloseInputGUI(_Test(), _Test ( ) ) ; ENABLE $g_hMainGUI; Eingegebene Daten uebernehmen, wenn kein Fehler bei der Eingabe (IP-Adresse)" & @CRLF & _
"Func _" & @CRLF & _
"_SciTE_ShowFuncName()" & @CRLF & _
"Func _SciTE_ShowFuncName () " & @CRLF & _
"Func _SciTE_ShowFuncName ( ";" ) ;" & @CRLF & _
"Func _SciTE_ShowFuncName (";"); " & @CRLF & _
"Func _SciTE_ShowFuncName (";" _ " & @CRLF & _
"_ ; und hier ein Kommentar" & @CRLF & _
", "hier geht es weiter"); " & @CRLF & _
"Func _SciTE_ShowFuncName()" & @CRLF & _
"Func _SciTE_ShowFuncName( (5+6) - (3*8))" & @CRLF & _
"Func _SciTE_ShowFuncName() ; () blabla" & @CRLF & _
"Func _SciTE_ShowFuncName(_AddComment(";" & $aComment[Random(0, 1, 1)])) ; () blabla" & @CRLF & _
"Func _Strip(11, "Func _SciTE_ShowFuncName('Das hier ist ""böse"". ;)')")"
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