From what I've read (which is dated by many years) TCL uses a DFA engine to test whether a match exists, then if it does and capturing substrings are needed, it uses an NFA engine to capture them.
But this is a pretty good explanation of an alternate way that a regular expression engine could work and blend the advantages of a DFA and NFA engine.