Reemplazar masivamente el código de comentarios con notepad++

Reemplazar masivamente el código de comentarios con notepad++

Bloc de notas++

Estoy buscando una forma de comentar en masa (y el código para deshacerlo) un bloque de texto. Ignorar otras partes del mismo archivo; pero al mismo tiempo respetando algunas diferencias en cada bloque.

bloque de ejemplo ya comentado,

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

El XXX sería diferente en cada bloque, aunque posiblemente sea el mismo en diferentes archivos (aunque solo tres letras/números); para un poco de complejidad adicional, lo ideal sería ignorar los bloques con exactamente XXX (y permanecer comentados).

El único indicador real de las restricciones de bloqueo es la(s) fecha(s) = {y el cierre}, que sería el mismo (hasta incluir en gran medida el texto # para guardar después)

Resultado final de Lo que estoy buscando.

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

puntos de bonificación por poder hacerlo en 4 o en las 8 fechas con un solo clic. (mientras forman superbloques)

1291.5.21
1291.5.23
1291.5.24
1291.5.26

1444.11.13
1444.11.15
1444.11.16
1444.11.18

Respuesta1

Aquí hay una solución para descomentar líneas que no tienen un valor igual a XXX:

  • Ctrl+H
  • Encontrar que:^#(?=\d{4}\.\d\d?\.\d\d?|}|\h+(?:owner|controller|add_core|remove_core)\h*=\h*(?!XXX)\w{3}$)
  • Reemplazar con:LEAVE EMPTY
  • CONTROLAR caso de partido
  • CONTROLAR Envolver alrededor
  • CONTROLAR Expresión regular
  • DESMARCAR . matches newline
  • Replace all

Explicación:

^#                          # 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

Captura de pantalla (antes):

ingrese la descripción de la imagen aquí

Captura de pantalla (después):

ingrese la descripción de la imagen aquí

información relacionada