我需要對我的網站存儲庫進行一個相當大的更改。
我有數百個 Markdown 文件,而在我的 Markdown 中,有時會包含帶有空格的圖像,這主要是因為它們是截圖,所以格式類似於
Screen Shot 2021-10-16 at 09.45.47.png
加載圖像的字符串是:
![Alt text](/images/vscode-search-replace-regex/Screen\_Shot\_2021-10-16\_at\_09.45.47.png)
這在我安裝的 Hugo 版本中運行良好,但最近在版本 0.100 中,他們刪除了我使用的 Markdown 库,名為 Blackfriday,現在只支持 Goldmark,它不再允許圖像中有空格(還有其他更改)。
為了跟上 Hugo,我真的需要更新我的網站,因為我使用的是舊版本,已經停止更新 10 個月了。
這就是我的問題所在。我需要更新所有的圖像鏈接。
嗯,其實不是這樣。我可以在圖像名稱中加上 <>
:
![Alt text](/images/vscode-search-replace-regex/Screen\_Shot\_2021-10-16\_at\_09.45.47.png)
然後一切又正常了。
我只需要搜索和替換所有的圖像鏈接!
我有成千上萬個這樣的鏈接,這不是我要做的事情。
所以我記得在 VS Code 中的查找/替換功能中有正則表達式。
經過一番試驗,使用如下的正則表達式:
!\[(.+)\]\((.\*\s+.\*)\)
我能夠創建 2 個捕獲組,一個用於 alt 文本,一個用於文件名。
然後在替換框中,我可以使用 $1 作為 alt 文本,使用 $2 作為文件名:
!\[\]\((.\*\s+.\*)\)
這個替換字符串 ![](/images/vscode-search-replace-regex/$1)
對於沒有 alt 文本的圖像有效(我知道,我知道…):
我是如何得出這些正則表達式的?
主要通過我的 JavaScript 正則表達式教程。
我之前寫過那篇文章,但它仍然是我首選的資源。
然後是一些谷歌搜索和使用 https://regex101.com 快速測試正則表達式。
正則表達式對我來說仍然有點神奇,但有時它是唯一能做到的工具。
就像在這個例子中一樣。