Regex substitui o segundo padrão mapeando [0-9] para [q-p] em Geany?

1

Gostaria de substituir 123 456 789 por q23 r56 u89 usando Geany regex. Até agora posso fazer isso com vários padrões de localização e substituição, como este:

...      
Find:    '(\D|^)4'    
Replace: 'r'    


Find:    '(\D|^)5'    
Replace: 't'    
...

Eu quero combinar essas 10 instruções em uma usando mapeamento de pela regra [1234567890] -> [qwertyuiop] .

Como posso fazer isso em geany?

    
por Stepan 22.07.2018 / 19:59

1 resposta

2

Eu não acho que isso possa ser feito com um único regex, já que não há como olhar para dentro de um grupo capturado. Mas o Perl pode fazer isso em uma linha, pois permite executar uma transliteração dentro de uma substituição:

$ echo 123 456 789 | perl -pe 's/\b[0-9]/ $& =~ tr,1-90,qwertyuiop,r /ge'
q23 r56 u89

(O s/pattern/replacement/ é um operador% de sed estilo localizar + substituir, \b corresponde a uma borda de palavra. O e após a% final/ torna a substituição uma expressão e o snippet usa tr/// para transliterar $& , a variável que contém o texto correspondente. Caracteres arbitrários podem ser usados como delimitadores para tr , portanto, a vírgula é usada para não entrar em conflito com o operador externo.)

Claro que isso não ajuda muito se você quiser fazer isso dentro do Geany.

    
por 01.10.2018 / 22:17