У меня нет Notepad ++ (да, я знаю; я живу в пещере), но у меня есть vi
(в Cygwin), и, похоже, у него есть похожие возможности. И эта команда
s/\(^\|]\)[^][]*\(\[\|$\)/\1\2/g
дал мне желаемый результат для вашего вклада. Я объясню, надеюсь, достаточно подробно, чтобы вы могли перевести его на Notepad ++ ese:
- Общая структура
vi
«S с ubstitute команды:s (разделитель) (найти что) (разделитель) (заменить на) (разделитель) (варианты)
где обычный разделитель/
, аg
опция обозначает г lobal (т. е. делайте замену как можно больше раз в каждой строке). Итак, мы имеемs / (найти что) / (заменить на) / г
- Моя находка что есть
\(^\|]\)[^][]*\(\[\|$\)
. По частям (с пробелами, добавленными для подсветки синтаксиса):\( ^ \| ] \)
Это группа захвата (\(…\)
), которая состоит из начала строки (^
) или a]
.[ ^ ][ ]
Набор символов.[^abc]
будет соответствовать любому символу, кромеa
,b
илиc
. Это соответствует любому символу, кроме a]
или a[
. (В регулярных выражениях Unix вы включаете]
в набор символов, ставя его первым или сразу после начального^
. Очевидно, в Блокноте ** вы делаете это, экранируя его\
?)[ ^ ][ ] *
Ноль или более из вышеперечисленного.\( \[ \| $ \)
Другая группа захвата; это своего рода зеркальное отображение первого. Это[
конец или конец строки. (Мы должны сбежать[
с\
символом, чтобы сделать его обычным персонажем.)
- Мой заменить есть
\1\2
,
что просто два захват группы.
Помещая его на английский, мы удаляем строки максимальной длины символов, отличные от [
или ]
которые появляются
- перед первым
[
(т. е. между началом строки и а[
), или - между а
]
и а[
, или - после последнего
]
(то есть между a]
и концом строки).