Regex (olhar atrás?)

Regex (olhar atrás?)

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:

insira a descrição da imagem aqui

informação relacionada