Moin,
Mit deinem Ansatz, wenn ich dich richtig verstanden habe, wirst du nicht weit kommen, denn dieser funktioniert nicht mehr, wenn Tables verschachtelt vorkommen.
Ich schlage daher folgendes vor:
Du machst
nur einen Durchlauf. Bei jedem vorkommenden "<Table" fügst du einer Liste einen Eintrag hinzu, in welchem die Startposition der (gerade gefundenen) Tabelle steht. Wenn du jetzt auf ein "</Table" stößt, dann entfernst du einfach den letzten Eintrag in der Liste und fügst die Daten des letzten Eintrags (also den Tabellen-Start) zusammen mit der Position, des gerade gefundenen End-Tags in eine weitere Liste ein.
Wenn der
HTML-Code korrekt ist, so wird die erste Liste nach einem Durchlauf wieder leer sein (schließlich sollte jedes Start-Tag auch ein korrespondierendes End-Tag besitzen). In der zweiten Liste befinden sich dann alle Tables zusammen mit deren (korrekten) Start- und End-Positionen.
Ich hoffe ich konnte mich halbwegs klar ausdrücken
Grüße,
Max