hardcore:
ищите все элементы , ставьте марки на них в цепочку, считаете их, т.е. если table то +1 если /table то -1
при первом table и последним /table не считаете.
после всего имеете первый и закрывающий его тэг
Понятно, что ваша регулярка находит первый закрывающий /table и возвращает результат. Но если у вас во всем коде соблюдены отступы, то можно сделать упор на них. Т.е. в данном случае вам достаточно привязать ваш /table к началу строки. Что-то вроде ^</table>. В иных случаях может пригодится фиксировать количество "табов" от начала строки.