Substitua a Linha, mas mantenha parte dela no Notepad++

Substitua a Linha, mas mantenha parte dela no Notepad++

Quero usar o Notepad++ para localizar/substituir grandes pedaços de código:

Eu tenho muitos:

ângulos[]={6,2744589,5,4066987,1,4066987};

com 3 valores. Preciso colocar todos os primeiros e segundos valores em 0 e manter o valor na terceira posição: S

ângulos[]={6,2744589,5,4066987,1,4066987};

para

ângulos[]={0,0,1.4066987};

Obrigado!

Responder1

Isso pode ser feito com uma pesquisa e substituição de regex (expressão regular) no Notepad++.

Encontrar:angles\[\]={\d+\.\d+,\d+\.\d+,(\d+\.\d+)};

Substituir com:angles[]={0,0,\1}

Observe que na expressão acima escapamos dos colchetes, daí a presença da barra invertida (), o terceiro grupo é um grupo de captura (entre parênteses). No final realizamos a substituição do primeiro e do segundo grupos, e o terceiro grupo é o valor original (referido como \1: o valor capturado).

Estou anexando um exemplo de captura de tela.

Substituição de regex do Notepad ++

Responder2

  • Ctrl+H
  • Encontre o que:\bangles\[\]=\{\K[^,]+,[^,]+
  • Substituir com:0,0
  • Replace all

Explicação:

\b          : word boundary, to be sure to match angles but not somethingangles
angles      : literally angles
\[\]=\{     : literally []=, brackets have to be escaped as they have special meaning in regex
\K          : Forget all we have seen until this point
[^,]+       : 1 or more any character that is not a comma, that matches also negative values
,           : a comma
[^,]+       : 1 or more any character that is not a comma
  • Verifique a expressão regular
  • NÃO VERIFIQUE. matches newline

Resultado para determinado exemplo:

angles[]={0,0,1.4066987};

informação relacionada