RegEx: Alle <table>-Tags extrahieren - trotz Zeilenumbrüchen
Flo
- php
0 Beat
Hallo Team,
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>
gibt mir nichts aus, aufgrund der Zeilenumbrüche.
<table(.*\s*)*<\/table>
bringt auch keine Ergebnisse, da stürzt mein RegEx-Tester ab.
Auch:
<table(?:.*\s*)*<\/table>
verreckt.
Bitte um Hinweise, wo sich mein Denkfehler versteckt...
Danke!
Florian
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