Einzelnen Beitrag anzeigen

jensw_2000
(Gast)

n/a Beiträge
 
#1

XE3 RegEx - Variablen im Fließtext finden, Kommentarzeilen ignorieren

  Alt 17. Mär 2013, 15:21
Delphi-Version: XE2
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 ...
Angehängte Dateien
Dateityp: zip test-app.zip (906,6 KB, 3x aufgerufen)

Geändert von jensw_2000 (17. Mär 2013 um 20:39 Uhr)
  Mit Zitat antworten Zitat