메모장++
나는 텍스트 블록에 대량 주석을 달 수 있는 방법(및 이를 실행 취소하는 코드)을 찾고 있습니다. 동일한 파일의 다른 부분을 무시합니다. 그러나 동시에 각 블록의 일부 차이점을 존중합니다.
예제 블록이 이미 주석 처리되었습니다.
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
XXX는 각 블록마다 다르지만 다른 파일에서는 동일할 수 있습니다(글자/숫자 세 개만 가능). 약간의 복잡성을 더하기 위해 정확히 XXX를 포함하는 블록은 이상적으로 무시되고 주석 처리된 상태로 유지됩니다.
블록 제한에 대한 유일한 실제 포인터는 날짜 = { 및 종료 }이며 이는 동일합니다(이후에 저장할 # 텍스트까지 및 대부분 포함).
내가 찾고 있는 것의 최종 결과입니다.
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
한 번의 클릭으로 4개 날짜 또는 8개 날짜 모두에 걸쳐 수행할 수 있는 보너스 포인트입니다. (슈퍼 블록을 형성하므로)
1291.5.21
1291.5.23
1291.5.24
1291.5.26
1444.11.13
1444.11.15
1444.11.16
1444.11.18
답변1
다음과 같은 값이 없는 행의 주석 처리를 제거하는 솔루션은 다음과 같습니다 XXX
.
- Ctrl+H
- 무엇을 찾다:
^#(?=\d{4}\.\d\d?\.\d\d?|}|\h+(?:owner|controller|add_core|remove_core)\h*=\h*(?!XXX)\w{3}$)
- 다음으로 교체:
LEAVE EMPTY
- 확인하다 성냥갑
- 확인하다 줄 바꿈
- 확인하다 정규식
- 선택 취소
. matches newline
- Replace all
설명:
^# # 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
스크린샷(이전):
스크린샷(이후):