I had the need to do a rather big change in the repository of my website.
I have hundreds of markdown files and in my markdown I sometimes include images with spaces, mostly because they are screenshots so the format is like
Screen Shot 2021-10-16 at 09.45.47.png
The string to load the image is:
![Alt text](Screen Shot 2021-10-16 at 09.45.47.png)
This worked fine in Hugo up to the version I had installed, but recently in version 0.100 they removed the support for the Markdown library I was using, named Blackfriday, and now only Goldmark is supported, which does not allow spaces in images any more (among other changes).
And I really had to update my site to keep up with Hugo as I was using an older version, 10 months old.
There goes my problem. I needed to update all my images links.
Well, not really. I could wrap the image name in
![Alt text](<Screen Shot 2021-10-16 at 09.45.47.png>)
and things work again.
I just have to search and replace all of them!
I have thousands of those, not something I’m going to do.
So I remembered VS Code has regular expressions in its find / replace functionality.
After a bit of experimentation, using a Regex like this:
I was able to create 2 capturing groups, one for the alt text and one for the filename.
Then in the replace box I could use $1 for the alt text and $2 for the filename:
and this replacement string
!(<$1>) worked for the images without alt text (I know, I know…):
How did I come up with those regular expressions?
I wrote that a while ago, but it’s still my go-to resource.
Then some googling and https://regex101.com for quickly testing the regex.
Regular expressions still feel a bit magic to me, but sometimes it’s the only tool that can do the job.
Like in this case.
Download my free Programming Ebooks!