User Tools

Site Tools


vba:tutorials:regexptest

This is an old revision of the document!


[VBA] RegExp testen im Direktfenster

Einfaches Testen unt Entwerfen von Regulären Pattern im Direktfenster

Um reguläre Ausdrücke zu erstellen, muss ich immer diverse Proberunden machen, bis sie wirklich das ausgeben, was ich haben will. Dazu verwende ich meine 2 Funktionen cRegExp() und print_r(). Mit diesen Zwei in Kombination lässt sich einfach im Direktfenster die Resultate eines RegExp testen.

cRegExp() akzeptiert analog zu PHP Patterns inklusive Modifiers.

Patterns bei cRegExp()

Zum Einen muss man natürlich die Regulären Ausdrücke von VBA kennen. Die Seite die mir dabei immer wieder hilft, ist id eoffizielle Seite von Microsoft Regular Expression Syntax (Scripting) ff.

Zum Anderen natürlich, dass man die Ausdrücke inklusive der Modifiers im Pattern unterbrichen kann.

Pattern inkl. Modifiers

Die Suchstrings können als Reguläre Ausdrücke daherkommen. Dazu müssen sie wie in PHP für preg_match() mittels Delemiter und Modifiers formatiert werden.

[Delemiter][Regulärer Ausdruck][Delemiter][Modifiers]

Delemiter

Als Delemiter können die folgenden Zeichen verwendet werden

@&!/~#=|

Modifiers

Es gibt 3 Modifier.Genau soviele wie die RegExp-Klasse Properties hat. Die Grosskleinschreibung wird nicht berücksichtig. Ebensowenig die Reihenfolge.

  • i IgnoreCase
  • g Global
  • m Multiline

Damit kann man die ganzen Settings in eine Ziele schreiben. ALso genau dass, was wir brauchen um im Direktfenster zu üben.

Mittels print_r() kann zudem das Resultat von RegExp.execute() ausgegeben werden. Somit habe ich alles zusammen, was ich brauche um das Verhalten eines Patterns zu testen.

'Der Pattern ^([^\d]*[\.a-z])\s*(.*) mit dem Modifier IgnoreCase
print_r cregexp("/^([^\d]*[\.a-z])\s*(.*)/i").execute("Haupt-Str. 11a")
<IMatchCollection2>  (
    [0] => <IMatch2>  (
        [Match] => <String> 'Haupt-Str. 11a'
        [FirstIndex] => <Long> 0
        [SubMatches] => <ISubMatches>  (
            [0] => <String> 'Haupt-Str.'
            [1] => <String> '11a'
        )
    )
)
vba/tutorials/regexptest.1448961692.txt.gz · Last modified: 01.12.2015 10:21:32 by yaslaw