如何在VS代码中使用正则表达式进行搜索和替换

116 阅读1分钟

我需要对我网站的资料库做一个相当大的改变。

我有数百个markdown文件,在我的markdown中,我有时会包含带有空格的图片,主要是因为它们是屏幕截图,所以格式是这样的:

Screen Shot 2021-10-16 at 09.45.47.png

加载图片的字符串是:

![Alt text](Screen Shot 2021-10-16 at 09.45.47.png)

这在我安装的Hugo版本中运行良好,但最近在0.100版本中,他们取消了对我使用的名为Blackfriday的Markdown库的支持,现在只支持Goldmark,它不再允许图像中的空格(还有其他变化)。

我真的不得不更新我的网站以跟上Hugo的步伐,因为我使用的是旧版本,已经有10个月了。

我的问题就在这里。我需要更新我所有的图片链接。

好吧,不是真的。我可以用<>.包裹图片名称:

![Alt text](<Screen Shot 2021-10-16 at 09.45.47.png>)

然后事情就恢复了。

我只是要搜索和替换所有的图片!我有成千上万的图片,这不是我要做的事。

我有数以千计的图片,这不是我想做的事。

所以我想起了VS Code的查找/替换功能中的正则表达式。

经过一番实验,使用这样的Regex:

!\[(.+)\]\((.*\s+.*)\)

我能够创建2个捕获组,一个用于alt文本,一个用于文件名:

然后在替换框中,我可以用1美元表示alt文本,2美元表示文件名:

!\[\]\((.*\s+.*)\)

而且这个替换字符串![](<$1>) ,对没有alt文本的图片也有效(我知道,我知道...):