I think you've painted yourself into a corner. Monster regexes
can be constructed to parse HTML and tables, but they
are quite difficult to perfect. As you have noted,
HTML::TableExtract is a far superior way to what you have
tried to create.
The
HTML::TableExtract module is surprisingly simple to
use. You really should give it a shot, as it will likely
take less time to figure out how to use it than it would
to diagnose your problem.
The reason why it may not match
and return false is
because it's spinning trying to find a match. Maybe there's
a billion different ways to try and get a match, and it will
investigate them all just to be sure. Doing a series of
mini-matches is much better, and using
HTML::Parser is
better yet.