RegEx und seine Geheimnisse - Teil 4
05.03.2021 20:14:05
Siegfried
Hoff es kann mir da jemand weiterhelfen.
Ich zerlegen einen String, in dem ich nach dem Trennzeichen = ; suche.
Der erste Teil enthält die Länderkenn, PLZ und Ortsnamen, sieht dann z.B so aus
GB-PL34 0DA Tintagel;
GB-4050 Traun; Stainland Road 363;
GB-PL27 7JQ Wadebridge;
GB-BT38 8BE Carrickfergus;
GB-Newton Stewart;
GB-Seasalter;
GB-Bideford;
da es ja in verschiedenen Ländern bei der PLZ eine Mischung von Buchstaben und Zahlen gibt wie 1, 3 und 4 Zeile, andere wie 5 - 7 Zeile wo die PLZ fehlt finde ich leider keine wirklich brauchbare Lösung das Problem echt zu lösen.
Ich trenne zu beginn mal den String durch entfernen der ersten 3 Zeichen, den Rest mit InstRrev durch suchen des ersten Leerzeichen von Rückwärts, übrig bleibt also die reine PLZ.
Diese werden nun mit Isnumeric(Wert) geprüft, in Zeile 2 also eindeutig, dann frage ich über Regex mit dem pattern "[A-z0-9]" ab, nun wünschte ich mir eine Rückantwort, ja in Wert handelt es sich um Zeichen und Zahlen daher aucch eine PLZ, besteht der Wert jedoch nur aus Zeichen, sollte der Ersatz (für den Ortsnamen) "xxxxx" sein.
Wie würde dazu bitte die/eine Lösung aussehen.
Dazu spielet leider noch mit das meine Regex-Abfrage mir immer einen Makrofehle auswirft und ich bis dato leider auch nicht die Ursache dazu gefunden habe.
Private Function RegEx(Text, pattern, Optional Occurence = 0) As String
'mit Extras, Verweise.. auf Microsoft VBScript Regular Expressions 5.5 (besser zu debugen)
Dim R As New RegExp
Dim ergs As Object
Set R = CreateObject("vbscript.regexp")
R.IgnoreCase = True
R.pattern = pattern
Set ergs = R.Execute(Text)
' If ergs.Count > 0 Then MsgBox "Enthält > " & Text & " und ergs.Count = > " & ergs.Count
If ergs.Count > 0 Then RegEx = Trim(ergs(0).submatches(Occurence))
End Function
Mir ist bekannt, einige hier lieben es nicht, aber zu den Problemen auch Bilder, denn die sagen oft mehr als nur Text.
Schon mal ein DANKE für Hilfeleistung
Gruß Siegfried