Substitua Linha, mas mantenha parte dela no Notepad ++


0

Eu quero usar o Notepad ++ para encontrar / substituir grandes pedaços de código:

Eu tenho muitos:

ângulos [] = {6.2744589,5.4066987,1.4066987};

com 3 valores. Eu preciso colocar todos os primeiro e segundo valores como 0 e manter o valor na terceira posição: S

ângulos [] = {6.2744589,5.4066987,1.4066987};

para

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

Obrigado!


Eu acho que você verá que o Notepad ++ é uma maneira difícil de fazer isso. Você já pensou em escrever um programa para escanear o arquivo e dividi-lo em pedaços e depois reequilibrá-lo? Você pode manter isso aberto no Notepad ++ e também abrir uma nova guia com o arquivo de saída para ter os dois. É isso que você está perguntando?
precisa saber é o seguinte

Não tenho tempo para testá-lo ou escrevê-lo, mas uma regex que substitua qualquer coisa entre {e a primeira ,por 0e também qualquer coisa entre duas vírgulas 0deve fazer o truque com base no seu exemplo.
Pimp Juice IT

@SDsolar "O Notepad ++ é uma maneira difícil de fazer isso" Não, não é.
DavidPostill

Você deixou de fora a parte em que eu disse: "Acho que você encontrará ..." - falando por mim, é muito mais fácil escrever um programa rápido. Posso fazer algumas expressões regulares, mas isso é mais difícil para mim do que lê-las e escrevê-las em Python.
precisa saber é o seguinte

Respostas:


2
  • 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
  • Verificar expressão regular
  • NÃO VERIFIQUE . matches newline

Resultado para um exemplo:

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

1

Isso pode ser realizado com uma pesquisa e substituição de expressão regular (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 uma amostra de captura de tela.

Substituição de regex do Notepad ++

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.