
このトピックについていくつか調査しましたが、私の特定のニーズにぴったりの解決策を見つけることができませんでした。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 を押すだけで、すべての ":" を "::" に置き換えることができます...ただし、この特定のケースでは、行の先頭が "." または ";" の 1 つの ":" 文字を置き換えないようにします。他のすべての ":" は "::" に変更されます。基本的に、最終結果は次のようになります。
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 :
スクリーンショット(前):
スクリーンショット(後):