Regulärer Ausdruck (Rückblick?)

Regulärer Ausdruck (Rückblick?)

Ich muss das hier umstellen:

zz  zz zz   zzzzYzzzzXzzzz zz     zzzzzz                zzzz zzYzz

das mögen:

1Y1X1Y1

Am besten auf einen Schlag.

zz\s*zzist gut, aber Sie müssen es mehrmals ausführen, um das zu erreichen, was ich brauche.

Paar ist die kleinste Einheit von z.

zz werden durch eine beliebige Anzahl und Kombination von Leerzeichen (Tabulatoren, Leerzeichen) voneinander getrennt.

X und Y können beliebige Zeichenfolgen außer z und Leerzeichen sein.

Leerzeichen sind immer durch zz umrandet (und befinden sich innerhalb der Y- und X-Zeichenfolgen).

Am besten wäre es, wenn dies in VBA-kompatibler Syntax wäre.

Antwort1

Sie können dies in GNU sed tun mit

sed -r 's/[z ]+/1/g'

Wenn dies nicht das ist, was Sie möchten, bearbeiten Sie Ihre Frage, um klarer zu beschreiben, was Sie möchten.

Antwort2

Der VBA-Code würde ungefähr wie folgt aussehen:

Sub test()
MsgBox ReplaceIt("zz  zz zz   zzzzYzzzzXzzzz zz     zzzzzz                zzzz zzYzz")
End Sub

Function ReplaceIt(strIn As String) As String
Dim RE As Object
Set RE = CreateObject("VBScript.RegExp")
RE.Pattern = "[z ]+"
RE.Global = True
ReplaceIt = RE.Replace(strIn, "1")
End Function

Hier ist das Ergebnis dieses Beispiels, wie es in Word ausgeführt wird:

Bildbeschreibung hier eingeben

verwandte Informationen