Tentando resolver um problema de code-golf usando zsh
, mas meu regex não está funcionando corretamente.
Requisito
Dada a string de entrada $1
, exclua todos os espaços imediatamente à esquerda de qualquer !
caractere.
Exemplos:
Input ($1) Expected Result:
" ! a! !b c!d !" => "! a!!b c!d!"
"a !" => "a!"
"! a" => "! a"
"! ! !" => "!!!"
"! " => "! "
Eu quero uma solução usando zsh
apenas builtins, este foi o mais próximo que consegui:
<<<${(S)1// *!/!}
Infelizmente - tente online - isso resulta em
!!!b!d!
! a
!!!
!
Como você pode ver, a primeira linha foi mutilada com muito entusiasmo pela *
partida. A documentação do zsh ( seg. 5.9.2 e 5.9.3 do Guia ) é bastante confusa neste ponto.
o +
operador de precedência também não funciona :(<<<${(S)1//+( )!/!}