am 26. Juli 2015
I have read the first edition of 'Mastering Regular Expressions' many years ago and that was an enormous boost to my ability of using regular expressions. In the meantime, a lot has happened in this area and because in my current job I use non-trivial regexes frequently, I thought getting the latest version of Jeffrey's book might be a good idea. It was. Compared to the first edition, there is a lot of new and updated material.
Even though I already knew quite a bit about this topic, this is still one of the very best technical books I've ever read (and I don't give five stars easily). No light reading at all, though. But the writing style of Jeffrey helps a lot to make things interesting and approachable. At the same time he succeeds to think razor-sharp, not forgetting corner cases. Sometimes it's almost frightening how he remembers to check and point out all possibilities. And again, all this without becoming repetitive, boring or anything the like.
The 31-page index is quite complete and definitely useful and the hundreds of cross references in the text are a boon. I'd have appreciated a few more tables or, better yet, an appendix with the existing tables all collected once more in one place for easy reference. But then, this book is not a reference, it is a book from which you can learn the ins and outs of regular expressions. And it does a very good job teaching this, starting out with an introduction to regular expressions and simple examples. A complete regex beginner might stop reading after the first one or two chapters, get his or her hands dirty with regexes for a while and then continue reading after a few months of using regular expressions. Some more complex samples follow and then an overview of regular expression features and flavours. For casual users the difference between DFA and NFA engines might not be so important, but the more you use regular expressions and the more complex things you start to solve with them, the more such differences become apparent. When you start to apply your knowledge to larger amounts of data, suddenly knowing about efficiency, which has its own chapter, or the mechanics of processing (another chapter) makes a huge difference. Need to handle unicode? Yes, Jeffrey has this covered too, just as regex use in various scripting languages, such as Java, .NET, PHP, Perl, Python, Tcl. Four of them, Perl, Java, .NET and PHP, even have their own chapters (which I did not read all).
If you want to learn about regular expressions, I can not imagine a better or more complete book to turn to. And if you're just curious about regexes, then read the first one or two chapters and start being impressed by how much simpler many data manipulation tasks suddenly become. You'll definitely pull out this book again from your bookshelf and continue reading after some time.