Andreas Korthaus: unperformanter regulärer Ausdruck

Beitrag lesen

Hallo!

Also nachdem das von der Performance her nicht ganz so wild war(komplettes 2002er Archiv parsen dauert keine 10 Minuten) habe ich ein anderes Problem: es fallen viele Postings unter den Tisch.  Von ca. 140.000 Postings kommen nur 110.000 in der Datenbank an. Das liegt am regulären Ausdruck, nur woran genau? Wie könnte ich das testen? Mein Ausdruck sieht jetzt so aus:

/<h2.*?><a.*?name="m([0-9]+)">((.*?)) (.*?)</a></h2>.*?<b>(.*?)</b>.*?(<b>(.*?)</b>.*?)?([0-9]{2}). ([\w&; ]+) ([0-9]{4}), ([0-9]{2}):([0-9]{2}) Uhr(.*?)<tt>(.*?)</tt>/

/*Beispielhaftes Posting:

<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>
*/

Ich habe z.B. gemerkt, das beim Datum zw. Monat und Jahr manchmal auch 2 Leerzeichen liegen. Vermutlich habe ich mehrere solcher Probleme. Wie könnte ich den oberen Ausdruck optimieren, um
a) alle Postings zu erfassen, und
b) die Performance zu steigern(Interesse halber)?

Viele Grüße
Andreas

PS: Wußte gar nicht das es Posting-IDs doppelt geben kann! Dadurch habe ich jetzt keinen Primary-Key mehr!