Don't use a regex?
Seriously, parsing something that has balanced anythings with regular expressions is notoriously hard to get right, especially if you want to be able to report back exactly where your user went wrong. They're more of a yes-or-no kind of deal.
If you want to parse a command line, it's better to use an actual parsing routine. The one in tilly's Text::xSV should be very close to what you're looking for. Actually, you could probably use Text::xSV with some very slight modifications. Well, one modification - you need to be able to specify the SEP as a regex of \s+.