True, regexps are more complicated, but their strength lies in the fact they can match *exactly* what you specify, kind of like how a key has to fit precisely in a lock, your templates have to fit in well-defined boundaries set by your patterns. That lets you specify exactly what can constitute a template. There is no way to sneak code into your PHP engine this way. With your eval-ing of code, if (somehow) an unrelated PHP script got caught up in your template (through controller error, bad memory, fudged keystrokes or whatever), you would end up executing it (which, needless to say, is rather bad).
I'm not saying your method is bad, but there are more precise (and secure) methods for achieving the same goal. Also, regular expressions are one of the most useful tools in the PHP toolshed. If you can master them for this, you will be unstoppable. Eval is one of the least useful tools, as it really does function as a crutch when programming logic fails (which isn't a bad thing in itself, as it serves as a sanity check