Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1748to1752
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA REGEX kniffelig

VBA REGEX kniffelig
09.04.2020 14:23:38
Robert
Hallo zusammen,
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!

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: teste mal ...
09.04.2020 14:53:43
Fennek
Hallo,
im Test ging es mit "\b" für Wortanfang:

Sub Test()
Tx = "=REVERSE(SUBSTR(KREVERSE(TRIM(FREI_KOST)),1,5))&(REVERSE(SUBSTR(%REVERSE(%QREVERSE( _
FREI_KOST)),1,5)))"
With CreateObject("vbscript.regexp")
.Global = True
.IgnoreCase = True
.MultiLine = False
.Pattern = "\bREVERSE"
Tx = .Replace(Tx, "KREVERSE")
Debug.Print Tx
End With
End Sub
mfg
AW: teste mal ...
09.04.2020 15:02:27
Robert
Hallo Fennek,
vielen Dank, es funktioniert!!
LG Robert
AW: teste mal ...
09.04.2020 17:04:21
Robert
.. kaum ein Problem gelöst, schon das nächste- hättest Du da auch eine Lösung?
ersetzt werden soll Left, aber nicht, wenn es von einem Join mit einem oder mehreren Leerzeichen gefolgt ist
Bsp
LEFT JOIN WORK.WIW_KOSTENSTELLEN t6 ON (Left(t1.Frei_KST) = left(t6.HierKst))
soll zu
LEFT JOIN WORK.WIW_KOSTENSTELLEN t6 ON (KLeft(t1.Frei_KST) = Kleft(t6.HierKst))
werden
Anzeige
AW: teste mal ...
09.04.2020 17:13:42
ChrisL
Hi Robert
Case insenesitive (Klammer miteinbeziehen)
left\(
Oder case sensitive
Left|left
cu
Chris

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige