Why don't more programmers use regular expressions? by Jonathan Neve
Answer by Jonathan Neve:
I happen to enjoy regular expressions immensely. So immensely, that in my more rational moments, I feel the need to moderate my enthusiasm by warning people that they actually can't (or at least shouldn't) be used for everything.
The truth of the matter is anything that can be done without a regex probably should be. Of course, I don't mean that literally (since technically, there's nothing that can't be written without a regex), but some problems really lend themselves to regexes, whereas most don't.
In cases that can be solved simply without a regex, the plain solution will most of the time be:
- Faster to write
- Faster to debug
- Faster to run
So again, much as I enjoy using regexes, and perhaps in fact because I enjoy using them so much, I need to hold myself back from using them everywhere. There are times when regexes absolutely shine, such as:
- Scripts/throw-away/"write-only" code
Write fast and don't worry about maintaining it
- One-off search or search and replace
If you need to grep the list of running processes to find and kill any process matching a certain pattern or started after a certain time, you can do it much faster and easier with a little one-liner involving a simple regex than you could any other way.
- Very complex text manipulation
Sometimes, runtime performance doesn't matter much, but using regexes can save a considerable amount of time by avoiding the need to write an all-out, full-blown parser.
For example, I recently wrote a little Perl script to convert code written in Borland C++Builder to Delphi. This is made possible by the fact that both environments share the same standard libraries, so it's "just" a matter of converting the C++ to Object Pascal. In about 1000 lines of code, most of it regexes, I actually got it to work up to about 95% (100% would probably not be possible). It only took me a few months, no idea how I could have done that without regular expressions.
So in conclusion, I would say that regular expressions are a wonderful and highly addictive tool that should be added to the arsenal of every programmer, yet we must resist the urge to forget all the other unromantic, boring (and, sadly, often better) ways we have of doing simple things.
It should also be noted that the extended notation (/x, also known as the kill-joy option*) allows for turning cryptic regular expressions into readable chunks of code with whitespace and comments, and it might help break the elitism of the regex-writer-band if we were to use this option to make regexes that are intelligible to an actual human. Yeah, it spoils some of the fun, I know, but still…🙂
In case you're thinking I'm exaggerating the quasi-cultishness/elitism of regex users, what do you think it shows that one of the most popular ressources online for help with regexes and Perl in general is called perlmonks.com?
*Not really, but that's how it can feel at times…