Como remover caracteres de uma string correspondente?

1

Eu quero remover espaços de uma lista de números de telefone. Os números de telefone estão no seguinte formato: "+33 x xx xx xx xx" na maior parte do tempo (aspas incluídas). Espaços podem ser colocados de maneira diferente.

No notepad ++, meu campo "Localizar o que:" se parece com isso e corresponde de maneira efetiva a cada número de telefone encontrado: "\Q+\E[0-9 ]+" . Mas eu não entendo como remover uma parte dele (os espaços).

Pensei em fazer isso em duas etapas: primeiro selecionar os resultados de uma pesquisa com o padrão de correspondência acima e, em seguida, fazer uma substituição com a caixa de seleção "Em seleção" marcada, mas não consigo encontrar como selecionar todas as pesquisas resultados de uma só vez.

    
por Cutter 14.04.2014 / 19:37

1 resposta

3

A maneira 'simples' é usar grupos de captura para cada grupo de números. Para um formato fixo, isso funciona bem. Localizar:

"\+33 ([0-9]) ([0-9]{2}) ([0-9]{2}) ([0-9]{2}) ([0-9]{2})"

E substitua por:

"+33$1$2$3$4"

A outra forma é um pouco mais flexível, mas, ao mesmo tempo, pode ser um pouco confusa, já que usa a \G anchor que não é tão comum, com a \K anchor, que pode ser ainda menos comum:

(?:"\+33|\G)[^\s"]*\K 

(Há um espaço no final) E substitua por nada.

demo regex101

(?:          # Begin group
  "\+33      # Match "+33
|            # OR
  (?!^)\G    # At the end of the previous match (and exclude start of lines)
)            # End group
[^\s"]*      # Any non-space or quote characters
\K           # Reset the match
             # Match a space

Tanto \G como \K não estão disponíveis em algumas versões anteriores do Notepad ++. Não me lembro exatamente quando foram apresentados, mas eles funcionam na versão 6.5.2.2.

    
por 14.04.2014 / 19:46