Nun beschäftige ich mich schon eine zeitlang mit RegExp's und habe auch schon einiges gelernt. Aber wie macht man es, etwas NICHT zu finden?
Gefunden werden sollen Funktions-Köpfe in einer Au3-Datei, die gültig* sind. (* Es kann nicht alles geprüft werden.)
NICHT gefunden werden sollen Funktions-Köpfe bei denen nach der ersten schließenden Klammer noch eine oder mehrere stehen. (Kommentare wurde schon entfernt.)
Beispiel
Func IchBin_Gueltig($_sVar_1, $_sVar_2 = "") ; <= Soll gefunden werden.
MsgBox(0, $_sVar_1, $_sVar_2)
EndFunc
Func IchBin_Ungueltig($_sVar_1, $_sVar_2 = "")) ; <= Soll NICHT gefunden werden wg. 2. Klammer.
MsgBox(0, $_sVar_1, $_sVar_2)
EndFunc
Ich prüfe mit folgendem Pattern: (Demo findet sich hier.)
Local $aFuncs = StringRegExp($sAllLines, _
'(?i)Func (\w+\h*\(.*\)\h*)\R\h*EndFunc.*\R', $STR_REGEXPARRAYGLOBALMATCH)
Wie gesagt, kann ich nicht alles prüfen, was der Syntax widerspricht. Das ist im Rahmen meines Vorhabens (CallTipViewer für OUDFs) auch nicht nötig, aber ein paar Sachen möchte ich für den Komfort des User abfangen.
Ich probiere da schon seit Stunden dran, kriege es aber nicht hin. Wie kann man das Pattern ändern, dass NICHT gefunden wird, wenn nach der ersten schließenden Klammer noch eine oder mehrere schließende Klammern stehen?
Bernd.