Necesito convertir esto:
zz zz zz zzzzYzzzzXzzzz zz zzzzzz zzzz zzYzz
dentro de esto:
1Y1X1Y1
Preferiblemente de una sola vez.
zz\s*zz
es bueno pero necesitas ejecutarlo varias veces para lograr lo que necesito.
El par es la unidad mínima de z.
zz están separados entre sí por cualquier número y combinación de espacios en blanco (tabulaciones, espacios).
X e Y pueden ser cualquier cadena excepto z y espacios en blanco.
Los espacios en blanco siempre están delimitados por zz (y están dentro de las cadenas Y y X).
Sería mejor si estuviera en una sintaxis compatible con VBA.
Respuesta1
Puedes hacerlo en GNU sed con
sed -r 's/[z ]+/1/g'
Si eso no es lo que desea, edite su pregunta para describir lo que desea con mayor claridad.
Respuesta2
El código VBA se parecería al siguiente código:
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
Aquí está el resultado de este ejemplo ejecutado en Word: