У меня есть такой документ:

A lot of text. 
insert:good graph:x
More text. insert: :y

Even more text. 

insert:another figure:z

Я хочу изменить все insert:description:x в ![description][A_Standardized_filepath/x.pdf] потому что эта команда ![][] прикреплю файл в мой markdown-документ. Обратите внимание, что x - это переменная, которую я меняю, и описание уникально для каждой переменной. Однако путь к файлу всегда один и тот же. (Обратите внимание, что y не было описания, которое я решил, добавив пробел.)

Это позволило бы мне ускорить процесс создания документов.


Я на Windows 7; Я предпочитаю использовать Notepad++ для письма.

1 ответ1

2

Я не знаю notepad++, но если он нашел и заменил с помощью регулярных выражений, вы должны быть в состоянии это адаптировать. В VIM я бы использовал:

:%s/insert:\([^:]*\):\([^ :]*\)/![\1][A_Standardized_filepath\/\2.pdf]/g

% Означает «действовать на каждую строку»; s запускает команду substitute (s/change this/to this/), а g в конце означает «действовать при каждом совпадении в строке» (в отличие от только первого совпадения, которое является поведением vim по умолчанию).

Мясо этого есть в первой части. \(\) обозначает группы захвата; так как notepad++ является относительно новым, я думаю, вам не понадобятся обратные слеши. Все, что находится между первым набором \(\) , упоминается как \1 в правой части команды (опять же, это может отличаться в notepad++: вместо этого perl использует $1 ), все между вторым набором \(\) упоминается как \2 справа и т. д.

[^:] означает «любой символ, кроме : », а [^ :] означает «любой символ, кроме пробела или : ». Это предполагает, что у вас никогда не будет пробелов в части имени файла вашей конструкции.

Если кто-то со знанием Notepad ++ придет, он может не стеснять каннибализировать это регулярное выражение в ответ.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .