Ich versuche gerade per RegEx alle Variablen in einem VB Script Template zu finden, die nicht in einer Kommentarzeile stehen.
Die
Variablen haben immer das
Format %%irgendwas%%.
Zusätzlich sollen alle Variablen von den Treffern
ausgeschlossen werden, die mit
%%ARRAY_ beginnen.
Das klappt schon mal weitestgehend gut mit folgendem Ausdruck:
Code:
(?!%%[Aa][Rr][Rr][Aa][Yy]_*)(%%[a-zA-Z][a-zA-Z]*[a-zA-Z0-9_]*%%)
Problem ist, dass ich es nicht schaffe die Variablen in den Kommentarzeilen zu ignorieren.
Kommentarzeilen beginnen mit ' (ggf. mit führenden Leerzeichen).
Zum Erkennen einer Kommentarzeile ist der Ausdruck
([\ ]*[']1*.*) schon mal ganz OK.
Irgendwie will die Vorab-Filterung via
(?![\ ]*[']1*.*) nicht so wie ich ...
Mein VB Script Template sieht etwa so aus:
Code:
Const ADS_GROUP_TYPE_SECURITY_ENABLED = &h80000000
'--------------------------------------------------------------------------------------------
' Globale Variablen deklarieren
'--------------------------------------------------------------------------------------------
Dim fso, f, Zeile, Feld
Dim SCRIPT_LANGUAGE
'TEMPLATE_INSERT_BEGIN "%%SCRIPT_ATTRIBUTE_NAMES%%"
%%SCRIPT_ATTRIBUTE_NAMES%%
'TEMPLATE_INSERT_END "%%SCRIPT_ATTRIBUTE_NAMES%%"
'--------------------------------------------------------------------------------------------
' ENDE Globale Variablen
'--------------------------------------------------------------------------------------------
'--------------------------------------------------------------------------------------------
' Variablen für
GUI Definitionen deklarieren
'--------------------------------------------------------------------------------------------
Dim objDomain ' .. das globale Domain-Object
Dim objAdRoot ' .. das globale AD-Stammverzeichnis-Objekt
Spielprojekt hängt dran.
Kann mir jemand bei dem RexEx helfen?
Grüße
Jens
PS:
Der Ausdruck
([\s]*[']+.*)(?!%%[Aa][Rr][Rr][Aa][Yy]_*)(%%[a-zA-Z][a-zA-Z]*[a-zA-Z0-9_]*%%) "erkennt" genau die beiden Zeilen, in denen auskommentierte Variablen stehen.
Wenn ich den Lookahead negiere
(?![\s]*[']+.*)(?!%%[Aa][Rr][Rr][Aa][Yy]_*)(%%[a-zA-Z][a-zA-Z]*[a-zA-Z0-9_]*%%) dann werden die auskommentierten Variablen aber wieder mit erkannt.
Mann, ist das kompliziert ...