Beat: RegEx: Alle <table>-Tags extrahieren - trotz Zeilenumbrüchen

Beitrag lesen

ich würde gerne alle <table>-Tags einer Webseite ausgeben. Das Problem ist, dass der Code auch Zeilenumbrüche berücksichtigen soll und genau hier stehe ich wie der Ochs vorm Berg...

<table.*<\/table>

Das ist keine regex sondern kaputtes HTML

gibt mir nichts aus, aufgrund der Zeilenumbrüche.

<table(.*\s*)*<\/table>

bringt auch keine Ergebnisse, da stürzt mein RegEx-Tester ab.

Das ist keine regex sondern kaputtes HTML

Auch:
<table(?:.*\s*)*<\/table>

verreckt.

ohne deine Delimiter ist dein Ausdruck keine Regex.
Ein Delimiter kann modifier haben:
//msiox (in Perl)
ohne den modifier //s matcht der . auf alles ausser \n
ditto in PHP

Du suchst nach einem table Start Tag _BIS_ zum table endtag

in Perl

my $elementname = "table";

input =~ /(<$elementname\s.*?/$elementname\s*>)/somefunc($1)/si;

Achte dass ich die modifier //si verwende. Man weiss ja nie in welchem case gerade geschrieben wurde.
ebenfalls habe ich den non greedy quantifier .*? verwendet

Hier übergebe ich den in () gespeicherten Ausdruck einer subfunktion,
die in der Lage ist, mit dem übergebenen String zu verfahren.

Das Equivalent in Php lautet callback.

mfg Beat

--
Woran ich arbeite:
X-Torah
><o(((°>           ><o(((°>
   <°)))o><                     ><o(((°>o
Der Valigator leibt diese Fische