Блокнот++
Я ищу способ массового комментирования (и код для его отмены) блока текста. Игнорируя другие части того же файла; но в то же время уважая некоторые различия в каждом блоке.
пример блока уже закомментирован,
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
Скриншот (до):
Скриншот (после):