Buscar/Reemplazar carácter en notepad++ usando comodines

Buscar/Reemplazar carácter en notepad++ usando comodines

Investigué un poco sobre este tema, pero no pude encontrar la solución exacta para mi necesidad particular. Estoy usando Notepad++ para escribir código ensamblador Z80. Necesito reemplazar todas las instancias de un carácter ":" con "::", pero sólo en casos específicos. Por ejemplo, digamos que tengo un código similar a este:

SomeFunction:
  ld a, whatever
  ret

; Remember to do this: blah blah blah

Function2:
  jr z, someWhere

.subfunction:
  ld hl, somePointer
  ret

Normalmente, podría seguir adelante y hacer Ctrl+H para reemplazar todas las instancias de ":" con "::"... sin embargo, en este caso particular, quiero evitar reemplazar el único carácter ":" en las líneas que comienzan con un "." o un ";". Todas las demás instancias de ":", cámbielas a "::" en su lugar. Básicamente, el resultado final sería el siguiente:

SomeFunction::
  ld a, whatever
  ret

; Remember to do this: blah blah blah

Function2::
  jr z, someWhere

.subfunction:
  ld hl, somePointer
  ret

¿Estoy teniendo sentido? Sé que puedo (y debo) usar una expresión regular para esto y que habría comodines involucrados, pero no estoy seguro.cómoYo empezaría a formatear eso. ¡Muchas gracias!

Respuesta1

Puedes probar lo siguiente:

  • Encontrar que:^(?=[^\;|\.])(.+\:)$
  • Reemplazar con: ``
  • Modo de búsqueda: expresión regular

Antes

Después

Respuesta2

Esto también verifica que los dos puntos no estén duplicados.

  • Ctrl+H
  • Encontrar que:^(?![;.]).*?(?<!:):\K(?!:)
  • Reemplazar con::
  • CONTROLAR Envolver alrededor
  • CONTROLAR Expresión regular
  • DESMARCAR . matches newline
  • Replace all

Explicación:

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

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