Регулярное выражение (заглянуть назад?)

Регулярное выражение (заглянуть назад?)

Мне нужно это повернуть:

zz  zz zz   zzzzYzzzzXzzzz zz     zzzzzz                zzzz zzYzz

в это:

1Y1X1Y1

Желательно одним махом.

zz\s*zzэто хорошо, но вам нужно запустить его несколько раз, чтобы добиться того, что мне нужно.

Пара — минимальная единица z.

zz отделяются друг от друга любым количеством и комбинацией пробелов (табуляции, пробелы).

X и Y могут быть любыми строками, кроме z и пробелов.

Пробелы всегда ограничены символами zz (и находятся внутри строк Y и X).

Было бы лучше, если бы синтаксис был совместим с VBA.

решение1

Вы можете сделать это в GNU sed с помощью

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

Если это не то, что вам нужно, отредактируйте свой вопрос, чтобы более четко описать то, что вы хотите.

решение2

Код VBA будет выглядеть примерно так, как показано ниже:

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

Вот результат этого примера, запущенного в Word:

введите описание изображения здесь

Связанный контент