Thinking Like a Computer
The preceding example hints at an important principle of regular expressions (and of programming in general): computers are extremely literal-minded. Even when it looks as if they are thinking the same way a human thinks, they aren’t. They are simply carrying out a specific sequence of instructions, very swiftly and very thoroughly.
Nowhere is the difference between human and computer thinking more apparent than in the area of pattern matching. When you use your eyes and brain to search a page for occurrences of a particular string of text, you might find yourself doing something like the following:
You think about the thing you’re looking for, and stick a conceptual image of it in some sort of special mental holding area.
You scan quickly and superficially over the contents of the page, processing the text as words and multiword phrases, letting potential matches “pop out” through some obscure subconscious process.
You investigate each potential match more carefully to see if it represents a real match.
Computers do something very different. In the case of Perl’s regular expression matching, there is no such thing as scanning “quickly and superficially,” no recognition of words or phrases as conceptual units. Perl sees only a string consisting of individual characters in a linear sequence, and only knows one way to scan through it: one character at a time, from beginning to end.
The differences between how you and Perl do pattern matching have been mostly ...