Hallo.
Um in meinen CallTipViewer OUDFs (own user defined function) anzeigen zu können, habe ich mit einer Funktion begonnen, die alle Funktionsköpfe aus einer .au3 Datei liest und (derzeit) in ein Array speichert. Dazu sind verschiedene Filter nötig, die per RegExp Sachen aus dem Gesamttext filtern sollen. Die verwendeten RegExp's habe ich aus dem INet gesammelt und angepasst (oder zumindest versucht). Da RegExp's nicht zu meinen besten Fähigkeiten zählen, bräuchte ich euren Rat und Meinung, ob das was ich habe in Ordnung ist und / oder verbessert werden kann.
So soll z. B. aus dem hier:
; Test-Funktion, zum Testen absichtlich vom linken Rand eingerückt, 2020-06-23.
Func Bla( $a, Const $x, ByRef $y,$e = ";", _ ; " (
$c = 0,$d='=', _
$b='') ; blubb) a
; ...
EndFunc
das werden: Bla ( $a, Const $x, ByRef $y, $e = ";", $c = 0, $d='=', $b='' )
Hier sind schon mal ein paar der Filter/Ersetzer. Im Script sind noch mehr, aber eins nach dem anderen.
; Mehrfache Whitespace durch ein einzelnes Leerzeichen ersetzen.
; ; Autor: Jos von der Zande.
; ; https://www.autoitscript.com/forum/topic/53631-replace-white-space-with-commas/?do=findComment&comment=405917
; $sAllLines = StringRegExpReplace($sAllLines,"(\s+)", ' ')
$sAllLines = StringRegExpReplace($sAllLines, "(\h+)", ' ') ; Abwandlung von Jos' Code, Bernd, 2020-06-24.
Das scheint mir ein einfacher Fall zu sein, ich habe nur s durch h ersetzt. Ist das so in Ordnung?
Bei den folgenden Anweisungen geht es darum, die ausgelesenen Zeilen so zu formatieren, dass die Syntax verdeutlich wird.
; Leerzeichen vor und hinter allen öffnenden Klammern einfügen.
$sAllLines = StringRegExpReplace($sAllLines, '(\()', ' ( ')
;
; Leerzeichen vor und hinter allen schließenden Klammern einfügen.
$sAllLines = StringRegExpReplace($sAllLines, '(\))', ' ) ')
; Leerzeichen nach Komma einfügen, wenn ihm ein $, ein ByRef oder ein Const folgt.
$sAllLines = StringRegExpReplace($sAllLines, ',\$', ', $')
$sAllLines = StringRegExpReplace($sAllLines, ',ByRef', ', ByRef')
$sAllLines = StringRegExpReplace($sAllLines, ',Const', ', Const')
Kann man von diesen Anweisungen welche zusammenfassen? Ziel ist es, die Geschwindigkeit des Codes zu erhöhen.
Bernd.
Edit: Thread-Titel geändert, sodass man bei einer Suche besser findet, um was es geht.