Andreas Korthaus: unperformanter regulärer Ausdruck

Beitrag lesen

Hi!

Ich weiss zwar nicht (und kann's momentan auch nicht ausprobieren) ob .*? langsamer ist als [^x]* aber alternativ zu deinen .*? kannst du ja auch nach dem nicht-Vorkommen eines bestimmten Zeichens abfragen:

statt:
<h2.*?><a.*?name="m([0-9]+)">((.*?))...etc..
<h2[^>]*><a[^>]+name="m([0-9]+)">(([^)]*))...etc..

Gute Idee, leider geht das meist nicht, da das ausgeschlossene Zeichen ja im String vorkommen kann, aber manchmal gehts.

Jetzt habe ich es so probiert:
$pattern = "/<h2[^>]+>\s*<a.*?name="m([0-9]+)">\s*(([^)]*)) *(.*?)</a>.*?<b>(.*?)</b>.*?(href="mailto:([^"]+)">.*?)?([0-9]{2}).\s*([\w&; ]+)\s*([0-9]{4}),\s*([0-9]{2}):([0-9]{2}).*?<tt>(.*?)</tt>/";
/*
<h2 class="sh2"><a class="an" name="m138412">(JAVA) Signierte Applets - Systemauslastung</a></h2>  <p>Die folgende Nachricht zum Thema stammt von:  <b>Axel Richter</b>,  <img src="/src/xgmail.gif" width="15" height="10" border="0" alt="E-Mail" /> <a href="mailto:axel.richter@ragbildung.de"><b>axel.richter@ragbildung.de</b></a>,  01. Oktober 2002, 10:59 Uhr  </p>  <p><tt>
*/

So, jetzt finde ich schon erheblich mehr, jetzt fehlen mir von 140.000 Postings noch etwas über 1000. Jemand ne Idee wo ich vielleicht noch etwas allgemeiner sein könnte?

Viele Grüße
Andreas