Massenweises Ersetzen von Kommentierungscode durch Notepad++

Massenweises Ersetzen von Kommentierungscode durch Notepad++

Notizblock++

Ich suche nach einer Möglichkeit, einen Textblock massenhaft zu kommentieren (und nach dem Code, um dies rückgängig zu machen). Dabei werden andere Teile derselben Datei ignoriert, aber gleichzeitig einige Unterschiede in den einzelnen Blöcken berücksichtigt.

Beispielblock bereits auskommentiert,

Code to keep Above

#1291.5.21 = { #some more text to preserve
#   owner = XXX
#   controller = XXX
#   add_core = XXX
#   remove_core = XXX
#} #some more text to preserve

More code to keep below

Die XXX wären in jedem Block unterschiedlich, könnten in verschiedenen Dateien aber auch gleich sein (allerdings nur drei Buchstaben/Zahlen). Um die Komplexität etwas zu erhöhen, würden Blöcke mit genau XXX im Idealfall ignoriert (und kommentiert bleiben).

Der einzige wirkliche Zeiger für die Blockbeschränkungen sind die Daten = { und das schließende }, die identisch wären (bis hin zum (weitgehend einschließlich) dem #-Text, nach dem gespeichert werden soll).

Endergebnis dessen, was ich suche.

Code to keep Above

1291.5.21 = { #some more text to preserve
    owner = XXX
    controller = XXX
    add_core = XXX
    remove_core = XXX
} #some more text to preserve

More code to keep below

Bonuspunkte gibt es, wenn Sie dies mit einem Klick für 4 oder alle 8 Daten tun können. (da sie Superblöcke bilden)

1291.5.21
1291.5.23
1291.5.24
1291.5.26

1444.11.13
1444.11.15
1444.11.16
1444.11.18

Antwort1

Hier ist eine Lösung zum Entfernen der Kommentarzeichen aus Zeilen, deren Wert ungleich ist XXX:

  • Ctrl+H
  • Finde was:^#(?=\d{4}\.\d\d?\.\d\d?|}|\h+(?:owner|controller|add_core|remove_core)\h*=\h*(?!XXX)\w{3}$)
  • Ersetzen mit:LEAVE EMPTY
  • ÜBERPRÜFEN Groß-/Kleinschreibung beachten
  • ÜBERPRÜFEN Umwickeln
  • ÜBERPRÜFEN Regulären Ausdruck
  • DEAKTIVIEREN . matches newline
  • Replace all

Erläuterung:

^#                          # beginning of line and # sign
(?=                         # positive lookahead
    \d{4}\.\d\d?\.\d\d?         # date
  |                         # OR
    }                           # closing curly brace
  |                         # OR
    \h+                         # 1 or more horizontal spaces
    (?:                         # non capture group
        owner                       # literally
      |                         # OR
        controller                  # literally
      |                         # OR
        add_core                    # literally
      |                         # OR
        remove_core                 # literally
    )                           # end group
    \h*=\h*                     # equal sign wth optional spaces before and after
    (?!XXX)                     # negative lookahead, make sure we haven't XXX after
    \w{3}                       # 3 word characters
    $                           # end of line
)                           # end lookahead

Screenshot (vorher):

Bildbeschreibung hier eingeben

Screenshot (nachher):

Bildbeschreibung hier eingeben

verwandte Informationen