Sven Rautenberg: Dynamisches Zusammenstellen von RegExps

Beitrag lesen

Aloha!

Nene, ich will ja alles in dem Paragraph, in dem auch das Wort steht, extrahieren... und es ist ja nicht gesagt, daß das Wort in der selben Zeile wie der paragraph steht und überhaupt, dieser Single-Multiline-Quark verwirrt mich... ich meine, es sind mehrere Zeilen in einer Variablen - brauche ich jetzt den single- oder multiline modus?

Du willst also folgendes Suchmuster suchen:

<p>.....DASWORT.....</p>

Wobei beliebig Zeilenumbrüche innerhalb des Musters vorkommen könnten.

Dann ist in der Tat der Single-Line-Modus richtig. Und du suchst nach:
/<[pP]>(.*?$wort.*?)</[pP]>/s
und hast alles zwischen <p> und </p> danach in $1 (wegen der runden Klammer.

Es sei an dieser Stelle angemerkt, dass du zum wirklich korrekten Verarbeiten von HTML einen Parser benötigst, keine regulären Ausdrücke. In HTML ist ja das End-Tag (leider) optional, du würdest beim fehlenden End-Tag also ein Problem kriegen und mehr finden, als du willst. Dem kann man auch nicht entgegentreten, denn irgendein festes Muster hinten muss sein. Hier eben <\p>. Sonst finden .*? nämlich weisungsgemäß Null Zeichen.

- Sven Rautenberg