"[star] matches zero or more occurrences of the previous character"<p>…those aren't regular expressions. Those are fancy globs. Regular expressions have a formal definition that is strictly more expressive than that.<p>They mention they use recursion (which you can use to <i>actually</i> implement regular expressions, albeit poorly) but…<p>…they use the recursion as a way of implementing a <i>state machine</i> in <i>C</i>? You can get away with this (and it's somewhat common) in a language like Lisp or ML that guarantees tail-call optimization, but this is poor form <i>at best</i> in C, where some compilers are unable to optimize tail calls, and you will blow your stack with long-lived state machines. Code recursion is really only appropriate when your data structures are recursive.<p>This is poor pedagogy. Students internalize stuff; you can't present them incorrect definitions and poor coding practices. C'mon guys, can't I expect better from the <i>inventors of C and Unix</i>??