RegEx Suchen/ ersetze
31.01.2016 12:13:44
Stefan
Hallo zusammen,
ich bin gerade dabei, mir eine Funktion zu schreiben, mit der ich durch mehrere
Worksheet suchen und ersetzen kann. Mit instr klappt das auch schon soweit.
Allerdings möchte ich die Suche etwas einschränken/ genauer machen.
Damit meine ich, wenn der Suchstring z.B. 192.168.1.1 ist würde instr auch 192.168.1.100 matchen.
Beispieltext: "192.168.1.100 (192.168.1.1) ,192.168.1.1, 192.168.1.100"
Erschwerend kommt hinzu, das der zu suchende String sich,
innerhalb von () oder ,, oder zwei Leerzeichen, also " 192.168.1.1 " oder am Anfang/ Ende einer Zeile befinden kann.
Ich denke mit instr komme ich hier nicht weiter und wollte es mit einem RegEx versuchen.
Dazu habe ich mir folgende Testfunktion gebastelt:
Sub test()
Dim vstring As String: vstring = "192.168.1.1 192.168.1.100 (192.168.1.1) ,192.168.1.1, 192. _
168.1.100 192.168.1.1"
Dim vsearch As String: vsearch = "192.168.1.1"
Set RE = CreateObject("vbscript.regexp")
RE.Pattern = "[\s,(]" & (vsearch) & "[\s,)]"
RE.Global = True
Set RegExMatches = RE.Execute(vstring)
If RegExMatches.Count <> 0 Then
For i = 1 To RegExMatches.Count
Debug.Print RegExMatches.Item(i - 1).Value
Next
End If
End Sub
Leider werden "192.168.1.1" am Anfang/ Ende nicht gefunden.Wenn ich um "?" ergänze, also so RE.Pattern = "[\s,(]?" & (vsearch) & "[\s,)]?",
wird zwar die "192.168.1.1" am Anfang/ Ende gefunde aber leider auch in "192.168.1.100".
Mit der "(vsearch)" wollte ich eigentlich nur den gefundenen String zurückbekommen, aber ich bekomme immer den gesamten RegEx Match zurück, also mit Leerzeichen, ",", "(" oder ")".
IP-Adressen war hier nur ein Beispiel, das ganze sollte auch mit Text funktionieren, also z.B. mit folgendem Beispiel:
"test teststring (test) ,test, teststring test"
Ich hoffe ihr könnt mir beim bauen des RegEx weiterhelfen.
Vielen Dank schonmal