Быстрые вложения с уценкой

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

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 ответ

Решение

Я не знаю 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 ++ придет, он может свободно использовать это регулярное выражение в ответ.

Другие вопросы по тегам