Learning to Love RegEx: a Find and Replace example
Someone in my blog publishing pipeline – Github, Jekyll, etc. – Changed how headings are formatted. Instead of
#Heading, I had to specify
# Heading. This makes sense, I just had converted this blog from elsewhere and it wasn’t high on my priorities at first. But all of a sudden things broke, so I had to change a lot of headings quickly.
I needed to find any instances of
##[Any Character] and add a space in-between, across all of my blog files.
This kind of thing always sets off a light bulb in my brain for regular expressions. I’ll be honest, I’m not a RegEx wiz in any sense of the word, but with some Googling I was able to figure it out.
Creating the RegEx
The requirements are to find two pound signs
## Followed by any letter (uppercase or lowercase).
The RegEx for this is
Adding the Capture Group
In order for Notepad++ to be able to replace the RegEx (rather than just find it), we have to create a capture group to capture that first letter (so that
A[space], with a space)
To do this, we wrap the first character portion in parentheses, giving us
##([A-Za-z]). This will create a capture group note that Notepad++ can refer to using
Replacing the text
- In Notepad++, we open the Find & Replace window.
- We Search for
- We replace it with
## \1(the original heading, plus a space, plus the first character)
- We make sure that the search mode is RegEx
- We perform the find and replace across all files.
This took care of a huge amount of changes for me and probably saved an hour or two of my life. Really makes one appreciate the value of RegEx.
Hope this is helpful!
Leave a comment