notepad ++ regex fim de linha substituir

2

Eu quero substituir o final de uma linha on line por ';' mas apenas em linhas que não terminam em ';' Eu vim com o seguinte para colocar no diálogo de substituição

Find What = '[^\;]\r\n' 

Replace with = '\;\r\n'

Meu problema é que isso também seleciona o último caractere de uma linha. Eu não quero substituir o último caractere ... apenas o retorno de carro.

Alguma idéia de como corrigir isso?

    
por CoderWolf 11.07.2016 / 16:52

2 respostas

2

Seu regex, tal como está, substituirá todo o final da linha, então a melhor aposta é pegar toda a linha, verificar uma semi e apenas substituir a seção que precisa (por exemplo, adicionar uma semi). / p>

(.*)([^\;])(\r\n)

é uma expressão com 3 grupos de captura:

  • (.*) - a primeira parte da linha
  • ([^\;]) - a verificação do semi ausente
  • (\r\n) - a linha que termina

Então, podemos pegar o primeiro grupo, adicionar um semi e depois pegar o último grupo para obter a linha completa, com a única diferença sendo a própria semi.

a expressão de substituição \; irá concatenar juntos o primeiro grupo, um semi e o último grupo.

Observe que a sintaxe \# é comum ao Notepad ++ e algumas outras ferramentas, mas não é universal (muitas usam $ 1, $ 2, ... $ n). não se esqueça de verificar a documentação do seu editor.

    
por 11.07.2016 / 17:38
1

Use

Find What: ([^\;])\r\n
Replace with: $1;\r\n

Ele substituirá o último caractere pelo mesmo caractere + ';' a menos que seja ';'

Além disso, em 'substituir' '\' não é necessário antes de ';'

    
por 11.07.2016 / 17:37