![使用 markdown 快速附件](https://linux22.com/image/1430043/%E4%BD%BF%E7%94%A8%20markdown%20%E5%BF%AB%E9%80%9F%E9%99%84%E4%BB%B6.png)
我有一份这样的文件:
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++ 相对较新,我预计您不需要在那里使用反斜杠。第一组之间的所有内容在命令的右侧\(\)
称为(同样,在 notepad++ 中可能有所不同:例如,perl 改用),第二组之间的所有内容在右侧称为,等等。\1
$1
\(\)
\2
[^:]
表示“除 之外的任何字符:
”,而[^ :]
表示“除空格或 之外的任何字符:
”。这假设您构造的文件名部分永远不会有空格。
如果有人了解 notepad++,他们应该可以随意地将这个正则表达式转化为答案。