Super interesting! My first reaction is, doesn't the while loop, combined with the conditional predicate of the string comparison, essentially promote the regular expression (finite state automaton) into a context-free expression (pushdown automaton)?
Definitely reminds me a lot of not needing parentheses on an RPN calculator, and the isomorphism between Lisp expressions and Forth expressions.
And about your question I will say that I didn't know that it was impossible (Chomsky & Co) to parse s-expressions with regular expressions and, thanks to StevenLevithan, I built one. And definitely, at least for me, the standard way using an AST doesn't fit my needs, as you could see here http://lambdaway.free.fr/lambdawalks/?view=lambdacode.
What do you think of http://lambdaway.free.fr/lambdawalks/?view=levithan and http://lambdaway.free.fr/lambdawalks/ ?