You will run into problems with nested tables, won't you?
A more complex solution would involve keeping track of the numbers of open/close table tags, so you can be sure that you have matches. For instance, each time you pass an open table tag, increment a counter, each time you pass a close table tag, decrement the counter, when the counter goes >1, you are inside a table, when it hits 0, you are outside of a table. If it hits 2 or more, you are inside a nested table.
I don't know how feasible this is, but it might be useful.
J. J. Horner
Linux, Perl, Apache, Stronghold, Unix