Suchen/Ersetzen von Zeichen in Notepad++ mithilfe von Platzhaltern

Suchen/Ersetzen von Zeichen in Notepad++ mithilfe von Platzhaltern

Ich habe zu diesem Thema einige Nachforschungen angestellt, konnte aber nicht die genaue Lösung für mein spezielles Anliegen finden. Ich verwende Notepad++, um Z80-Assemblercode zu schreiben. Ich muss alle Vorkommen eines ":"-Zeichens durch "::" ersetzen, aber nur in bestimmten Fällen. Angenommen, ich habe Code, der so aussieht:

SomeFunction:
  ld a, whatever
  ret

; Remember to do this: blah blah blah

Function2:
  jr z, someWhere

.subfunction:
  ld hl, somePointer
  ret

Normalerweise könnte ich einfach Strg+H drücken, um alle Vorkommen von ":" durch "::" zu ersetzen... in diesem speziellen Fall möchte ich jedoch vermeiden, das einzelne ":"-Zeichen in Zeilen zu ersetzen, die mit einem "." oder einem ";" beginnen. Alle anderen Vorkommen von ":" werden stattdessen durch "::" ersetzt. Im Wesentlichen würde das Endergebnis so aussehen:

SomeFunction::
  ld a, whatever
  ret

; Remember to do this: blah blah blah

Function2::
  jr z, someWhere

.subfunction:
  ld hl, somePointer
  ret

Ist das verständlich? Ich weiß, dass ich dafür einen regulären Ausdruck verwenden kann (und sollte) und dass Platzhalter verwendet werden, bin mir aber nicht sicherWieIch würde das formatieren. Vielen Dank!

Antwort1

Sie können Folgendes versuchen:

  • Finde was:^(?=[^\;|\.])(.+\:)$
  • Ersetzen durch: ``
  • Suchmodus: Regulärer Ausdruck

Vor

Nach

Antwort2

Dadurch wird auch überprüft, dass die Doppelpunkte nicht bereits doppelt vorhanden sind.

  • Ctrl+H
  • Finde was:^(?![;.]).*?(?<!:):\K(?!:)
  • Ersetzen mit::
  • ÜBERPRÜFEN Umwickeln
  • ÜBERPRÜFEN Regulären Ausdruck
  • DEAKTIVIEREN . matches newline
  • Replace all

Erläuterung:

^           # beginning of line
    (?![;.])    # negative lookahead, make sure the next character is not ; or .
    .*?         # 0 or more any character but newline, not greedy
    (?<!:)      # negative lookbehind, make sure the previous character is not :
    :           # a colon
    \K          # forget all we have seen until this position
    (?!:)       # negative lookahead, make sure the next character is not :

Screenshot (vorher):

Bildbeschreibung hier eingeben

Screenshot (nachher):

Bildbeschreibung hier eingeben

verwandte Informationen