Zeile ersetzen, aber einen Teil davon in Notepad++ behalten

Zeile ersetzen, aber einen Teil davon in Notepad++ behalten

Ich möchte Notepad++ verwenden, um große Codeblöcke zu suchen/ersetzen:

Ich habe viel von:

Winkel[]={6.2744589,5.4066987,1.4066987};

mit 3 Werten. Ich muss alle ersten und zweiten Werte auf 0 setzen und den Wert an der dritten Stelle behalten :S

Winkel[]={6.2744589,5.4066987,1.4066987};

Zu

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

Danke!

Antwort1

Dies kann mit einer Regex-Suche und -Ersetzung (regulärer Ausdruck) in Notepad++ erreicht werden.

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

Ersetzen mit:angles[]={0,0,\1}

Beachten Sie, dass wir im obigen Ausdruck die Klammern umgehen, daher das Vorhandensein des Backslashs (); die dritte Gruppe ist eine Erfassungsgruppe (zwischen Klammern). Am Ende führen wir eine Ersetzung für die erste und zweite Gruppe durch, und die dritte Gruppe ist der ursprüngliche Wert (bezeichnet als \1: der erfasste Wert).

Ich füge ein Beispiel-Screenshot an.

Notepad++ Regex ersetzen

Antwort2

  • Ctrl+H
  • Finde was:\bangles\[\]=\{\K[^,]+,[^,]+
  • Ersetzen mit:0,0
  • Replace all

Erläuterung:

\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
  • Überprüfen Sie den regulären Ausdruck
  • NICHT PRÜFEN. matches newline

Ergebnis für gegebenes Beispiel:

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

verwandte Informationen