Por que o re.sub no Python não funciona corretamente neste caso de teste?
Experimente este código.
test = ' az z bz z z stuff z z '
re.sub(r'(\W)(z)(\W)', r'\1_\2\3', test)
Isso deve substituir todos os zs independentes por _z
No entanto, o resultado é:
'az _z bz _z z coisas _z _z'
Você vê que há um z que está faltando. Eu teorizo que é porque o agrupamento não pode pegar o espaço entre os zs para corresponder a dois zs de uma vez (um para espaços em branco à direita, outro para espaços em branco à esquerda). Existe uma maneira de corrigir isso?