VBA REGEX kniffelig
09.04.2020 14:23:38
Robert
ich stehe vor einem kniffeligen Problem, an dem ich mir die Zähne ausbeisse- ich hoffe ihr könnt mir helfen.
Gesuchtist ein regulärer Ausdruck um das Wort REVERSE durch KREVERSE bzw %REVERSE durch %KREVERSE zu ersetzten.
Es gibt jedoch Wortvarianten QREVERSE, KREVERSE, usw, bzw %QREVERSE, %KREVERSE, usw die nicht verändert werden sollen, also jene Kombinationen: [A-Z]REVERSE bzw %[A-Z]REVERSE
text = "=REVERSE(SUBSTR(KREVERSE(TRIM(FREI_KOST)),1,5))&(REVERSE(SUBSTR(%REVERSE(%QREVERSE(FREI_KOST)),1,5)))"
Erwartetes Ergebnis: "=KREVERSE(SUBSTR(KREVERSE(TRIM(FREI_KOST)),1,5))&(KREVERSE(SUBSTR(%KREVERSE(%QREVERSE(FREI_KOST)),1,5)))"
Public Sub reg()
Dim regex As New RegExp, Fundstellen As MatchCollection, fund As Match
text = "=REVERSE(SUBSTR(KREVERSE(TRIM(FREI_KOST)),1,5))&(REVERSE(SUBSTR(%REVERSE(%QREVERSE( _
FREI_KOST)),1,5)))"
Ergebnis = "=KREVERSE(SUBSTR(KREVERSE(TRIM(FREI_KOST)),1,5))&(KREVERSE(SUBSTR(%KREVERSE(% _
QREVERSE(FREI_KOST)),1,5)))"
regex.Global = True
regex.IgnoreCase = True
regex.MultiLine = True
regex.Pattern = "([^A-Z\(\)=]REVERSE)" 'hier nur die Variante ohne vorangestelltem %
regex.Execute (text)
Debug.Print "Ersatztext: " & regex.replace(text, "KREVERSE")
End Sub
Vielen Dank für Eure Hilfe!