Eu preciso virar isso:
zz zz zz zzzzYzzzzXzzzz zz zzzzzz zzzz zzYzz
nisso:
1Y1X1Y1
De preferência de uma só vez.
zz\s*zz
é bom, mas você precisa executá-lo várias vezes para conseguir o que preciso.
Par é a unidade mínima de z.
zz são separados um do outro por qualquer número e combinação de espaços em branco (tabulações, espaços).
X e Y podem ser quaisquer strings, exceto z e espaços em branco.
Os espaços em branco são sempre delimitados por zz (e estão dentro das strings Y e X).
Seria melhor se estivesse em uma sintaxe compatível com VBA.
Responder1
Você pode fazer isso no GNU sed com
sed -r 's/[z ]+/1/g'
Se não é isso que você deseja, edite sua pergunta para descrever o que deseja com mais clareza.
Responder2
O código VBA seria semelhante ao código abaixo:
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
Aqui está o resultado deste exemplo executado no Word: