와일드카드를 사용하여 notepad++에서 문자 찾기/바꾸기

와일드카드를 사용하여 notepad++에서 문자 찾기/바꾸기

이 주제에 대해 몇 가지 조사를 해봤지만 내 특별한 요구에 맞는 정확한 해결책을 찾지 못했습니다. 저는 Notepad++를 사용하여 일부 Z80 어셈블리 코드를 작성하고 있습니다. ":" 문자의 모든 인스턴스를 "::"으로 바꿔야 하지만 특정 경우에만 해당됩니다. 예를 들어 다음과 같은 코드가 있다고 가정해 보겠습니다.

SomeFunction:
  ld a, whatever
  ret

; Remember to do this: blah blah blah

Function2:
  jr z, someWhere

.subfunction:
  ld hl, somePointer
  ret

일반적으로 Ctrl+H를 눌러 ":"의 모든 인스턴스를 "::"으로 바꿀 수 있습니다. 하지만 이 특별한 경우에는 시작하는 줄에서 단일 ":" 문자를 바꾸는 것을 피하고 싶습니다. "." 또는 ";". ":"의 다른 모든 인스턴스는 대신 "::"으로 변경하세요. 기본적으로 최종 결과는 다음과 같습니다.

SomeFunction::
  ld a, whatever
  ret

; Remember to do this: blah blah blah

Function2::
  jr z, someWhere

.subfunction:
  ld hl, somePointer
  ret

내가 이해하고 있는 걸까? 이에 대해 정규식을 사용할 수 있고 사용해야 한다는 것과 와일드카드가 관련될 것이라는 점을 알고 있지만 확실하지 않습니다.어떻게나는 그것을 포맷하려고합니다. 정말 고마워!

답변1

다음을 시도해 볼 수 있습니다.

  • 무엇을 찾다:^(?=[^\;|\.])(.+\:)$
  • 다음으로 바꾸십시오: ``
  • 검색 모드: 정규식

전에

후에

답변2

또한 콜론이 이미 두 배가 되지 않았는지 확인합니다.

  • Ctrl+H
  • 무엇을 찾다:^(?![;.]).*?(?<!:):\K(?!:)
  • 다음으로 교체::
  • 확인하다 줄 바꿈
  • 확인하다 정규식
  • 선택 취소 . matches newline
  • Replace all

설명:

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

스크린샷(이전):

여기에 이미지 설명을 입력하세요

스크린샷(이후):

여기에 이미지 설명을 입력하세요

관련 정보