Well, for one thing Damian Conway has written
to facilitate the matching of certain oft-matched patterns, ie, bracketed/parenthesized text, quoted text, tagged (XML/HTML) text, delimiter-separated, etc.
In addition, if you want to label parts of your regexes and then piece them together, you can use Damian's Parse::RecDescent. I like it very much for this purpose. Be sure to read on the skip directive to understand the default and configurable nature of how individual regexes are pieced together.