
이 주제에 대해 몇 가지 조사를 해봤지만 내 특별한 요구에 맞는 정확한 해결책을 찾지 못했습니다. 저는 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 :
스크린샷(이전):
스크린샷(이후):