There's a problem here. Traditionally, regular expressions can't match things that count (anbn). Perl RE have things that help with this (things that aren't really DFA-y); but you still probably want to look at things like Text::Balanced.