Regular Expressions sind allgemein schon älter im Microsoft Umfeld aber erst seit der VBScript Version 5.0 verfügbar. Um die aktuellste VBScript Version zu installieren, können Sie diese Downloaden unter
http://msdn.microsoft.com/scripting/
Wer schon mit z.B. mit Perl gearbeitet hat, wird diese eventuell schon kennen. Auf den ersten Blick verwirrt einen die Syntax enorm. Historisch waren schon in frühen UNIX Versionen speziell im Editor VI für Textsuche die Regular Expressions vorhanden und beliebt (nicht beim mir). Im Microsoft Umfeld untersützt der InterDev Editor und JScript seit einige Zeit Regular Expressions und eben jetzt auch VBScript.
Die Regular Expressions sind eine definierte komplexe Sprache die auf Steuerzeichen basiert um Texte zu durchsuchen. Auch das ersetzen von Texten mit z.B. dem Replace Befehl lässt sich damit lösen.
Er Sprachumfang ist sehr groß und lässt sich in Kategorien teilen.
- Zeichenübereinstimmung
- Wiederholung
- Position
Zeichenübereinstimmung:(Character Matching)
Beginnen wir doch mit dem einfachsten. Sie wollen nach "ppedv" suchen. Die Expression ist:
ppedv
Wenn Sie einen Asterix (Joker) verwenden wollen, können Sie ein Steuerzeichen einsetzen.
p.edv
Der "." liefert alle ppedv,pvedv, p1edv usw
Sie können in einer eckigen Klammer auch Ausdrücke eingeben die einen Bereich beschreiben. In
diesem Beispiel nehmen wir eine Liste von möglichen Zeichen.
[1234]edv
Dies lässt zu: 1edv,2edv,3edv,4edv. Ein Ausdruck 5edv würde nicht angezeigt.
Um nun einen kompletten Bereich anzugeben, kann der Startwert und Endwert verwendet werden.
[0-9]edv
Dies gilt auch für Buchstaben.
[a-g]edv
Zu beachten ist, das die Expression Case Sensitive sind.
Wiederholung(Repetition Matching):
Schwieriger wird es mit Stringoperationen wenn die Abfragen komplexer werden.
So möchten Sie vielleicht ein bestimmtes Zeichen ignorieren. Die ist mit dem ? möglich.
pp?
Würde pp, pp1, ppa,pp0 usw liefern.
Mit dem zusätzlichen \ können Sie das ? maskieren.
ppedv\?
Wenn Sie in der Form eines Likes und % aus SQL vorgehen möchten, können Sie den * verwenden
pp*
Damit erhalten Sie pp, ppedv, pppppp. Um eine Gruppierung vorzunehmen können Klammern verwendent werden.
pp(edv)*
Damit ist das pp fest und Sie würden erhalten pp,ppedv, ppedvedv,ppedvedvedv
Sie können auch die Anzahl der über die {} angeben. Wenn Sie Strings wie pppedv zurück erhalten wollen schreiben Sie
p{3}edv
Postion(Position Matching)
Die letzte Steigerungsstufe ist die Postion. Wenn Sie auf die ersten Zeichen prüfen wollen verwenden Sie das ^.
^ppedv
Um von hinten anzufangen bzw nur den String zu erhalten wenn am Schluss die übereinstimmung ist, verwenden Sie das $ Symbol.
ppedv$
Dies ist bestenfalls ein Auszug aus der umfangreichen Syntax. Interesannte Beispiele und Ergänzungen können jederzeit über die Foren kommuniziert werden.Wie verwenden Sie jetzt aber die Regular Expressions? Das wird über einen eigenen Objekttyp realisiert.
Dim oRegExp Set oRegExp = New regexp |
Dazu mehr im nächsten Artikel