Why aren't Perl's patterns regular expressions?

Q

Why aren't Perl's patterns regular expressions?

✍: Guest

A

Because Perl patterns have backreferences.
A regular expression by definition must be able to determine the next state in the finite automaton without requiring any extra memory to keep around previous state. A pattern /([ab]+)c\1/ requires the state machine to remember old states, and thus disqualifies such patterns as being regular expressions in the classic sense of the term.

2013-09-02, 1657👍, 0💬