Rubrik: Variablen/Strings · Sonstiges | VB-Versionen: VB6 | 04.10.04 |
Reguläre Ausdrücke mit VB6 Auch wenn VB selbst das Benutzen von "regulären Ausdrücken" nicht unterstützt, gibt es für VB6-Entwickler dennoch eine Möglichkeit! | ||
Autor: Stefan Mähr | Bewertung: | Views: 21.718 |
www.visualsoft-net.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Reguläre Ausdrücke sind eine mächtige Suchsprache, mit der sich auch komplizierte Abfragen auf große Textdokumente durchführen lassen. Regex-Abfragen sind aber nicht nur .NET Programmieren vorbehalten, sondern lassen sich auch von VB6 Entwicklern via der vbscript.dll nutzen.
Öffnen Sie eine Standard-Exe Projekt.
Benötigte Verweise:
Platzieren Sie auf die Form folgende Steuerelemente:
- Richtextbox (txtValidate)
- Commandbutton (cmdValidate)
- Textbox (txtRegex)
Code:
Option Explicit Private Sub Form_Load() ' -> Hier legen wir unseren Testtext fest. ' Sie können diesen natürlich beliebig verändern txtValidate.Text = "Wir finden ein paar Wörter in einem Text" & _ vbCrLf & "Wie benütze ich Regular Expressions in VB6?" End Sub
' Fundstellen farblich kennzeichnen Private Sub cmdValidate_Click() Dim oRegex As RegExp Dim m As Match Dim strPattern As String ' --> Pattern einlesen und prüfen strPattern = txtRegex.Text If Len(Trim(strPattern)) = 0 Then Exit Sub On Error GoTo ErrHandler ' --> die Selectionfarbe der Richtextbox zurücksetzen With txtValidate .SelStart = 1 .SelLength = Len(.Text) .SelColor = vbBlack End With ' --> "Regular-Expression"-Objekt erstellen Set oRegex = New RegExp With oRegex .Pattern = strPattern .Global = True ' --> Alle Matches durchlaufen For Each m In .Execute(txtValidate.Text) ' --> Gefundene Einträge in der Richtextbox markieren With txtValidate .SelStart = m.FirstIndex .SelLength = m.Length .SelColor = vbRed End With Next End With ' --> Regex Objekt zerstören Set oRegex = Nothing Exit Sub ErrHandler: MsgBox Err.Description & vbCrLf & Err.Number, vbCritical + vbOKOnly, "Error" Set oRegex = Nothing Err.Clear End Sub
Nun kommen wir zum Ausdruck für die Abfrage selbst.
Starten Sie das Projekt probieren einmal folgende "Abfragen" aus:
VB -> suche nach dem Wort VB im Text i -> sucht alle „i" im Text [0-9] -> sucht alle numerischen Werte im Text (ein|ich) -> sucht alle "ein" und "ich" im Text