Reguläre Ausdrücke

Ibanese

Mitglied
Hallo,

ich verfasse meine Frage mal in diesem Teil des Forums, da ich denke, dass hier einige unterwegs sind, die mir eventuell helfen könnten.

Habe folgenden Ausdruck

/(?<=(<body(.*)>))(.*)(?=<\/body>)/is

der zu durchsuchende Text dafür ist.

HTML:
<html>
<head>
<title>
</title>
</head>
<body>
    <div id="meinediv1">
        Hier steht Text drinnen
    </div>
</body>
</html>

Ich möchte also den Teil zwischen <body> und </body> filtern (ohne die tags). Mit folgendem Ausdruck funktioniert es ...
/(?<=(<body>))(.*)(?=<\/body>)/is

Habe hier (.*) weggelassen ... jedoch können im <body> tag ja noch weitere Infos stehen z.B. (<body onload="">), deshalb wäre der erste Ausdruck besser.

Ich habe das Gefühl, dass ich im Positive Lookbehind keine * verwenden darf, also keine {0,} (funktioniert nämlich auch nicht)

Könnt ihr mir vielleicht irgendwie auf die Sprünge helfen, ob ich hier einen Logikfehler habe, oder ob es einfach nicht geht?

Danke, Iba
 
Spricht etwas dagegen einfach /<body(?:"[^"]*"|'[^']*'|[^>]*)*>(.*)<\/body>/is zu verwenden? Oder musst du unbedingt die gefundene Übereinstimmung des gesamte regulären Ausdrucks verarbeiten und nicht etwa nur die der ersten Gruppierung?
 
Zurück