Regular Expression

Hebi10

Newbie
Registriert
Jan. 2024
Beiträge
5
Hallo,
ich beginne gerade mich mit diesem Thema auseinanderzusetzen und stoße sofort auf ein Problem über welches erfahrene User wahrscheinlich schmunzeln werden.
Ich möchte RegExp in VBA verwenden und es geht mir um die Formulierung des Patterns.

Teststring (str2): Hel!das!lo Wor!warum nicht auch das!l!oder, das!d
(im Text sind beliebige Zeichen zwischen zwei ! eingefügt, dieser Zeichen sollen herausgeschnitten werden)

Der folgende VBACode liefert das korrekte Ergebnis, nämlich --> Hello World

With regexObject
.Pattern = "![a-zA-Z0-9 ,]+!"
.Global = True
End With
MsgBox regexObject.Replace(str2, Replace_Str)

Sieht der Teststring allerdings so aus.

Teststring (sgtr2): Hel"das"lo Wor"warum nicht auch das"l"oder, das"d
(hier sind die überschüssigen Zeichen durch " getrennt)

In diesem Fall haben ich leider keine Ahnung, wie das Pattern korrekt zu formulieren ist.


Danke für HIlfe
HB
 
Danke,
das wars
Ergänzung ()

Rein interessehalber schieb ich gleich noch eine Frage nach.
wie müsste das Pattern aussehen wenn der Teststring überschüssige Zeichen sowohl zwischen "" als auch !! enthält?
Ohne lange nachzudenken würde ich den String zweimal hintereinander behandeln als einmal mit "" und dann mit !!. Ich denke aber, dass man das Pattern auch so formulieren könnte, dass es gleich auf einmal geht.
 
Zuletzt bearbeitet:
Hallo,
jetzt gibt es ein neues Problem

Ich möchte aus dieser Zeichenkette
d2d2B2G G | d2d2c2A A | d2d2c2F2 & f2f2e2c2 | d2d2c2F2 | G4z2 & B4 :|
jeweils den Teil zwischen & und dem ersten Auftreten von | oder : herausschneiden

Ich verwende dazu folgendes Pattern.

&([^&]*)[\|:]

Wenn ich das auf Regex101 teste, dann wird mir immer der Bereich vom & bis zum letzten | markiert.
D.h. es sollte & f2f2e2c2 | liefern und nicht & f2f2e2c2 | d2d2c2F2 |

Wie kann ich das Suchmuster auf das erste | beschränken.

Danke für Hilfe
HB
 
Versuch es mit einem Fragezeichen hinter dem Stern. Dadurch wird der Ausdruck nicht greedy und hört an frühsten Stop auf.
 
  • Gefällt mir
Reaktionen: BeBur
Zurück
Oben