'Alles, was nicht ist' RegEx

Hey!

Ich habe einen String, der folgendermaßen aussieht:

Aktionsangebot!
Jetzt für nur 12,50 EUR, anstatt 13,95 EUR!
Gültig bis 31.08.2010!

Nun möchte ich den kompletten … Teil raus haben.
Für den Teil zwischen den Tags fehlt mir allerdings noch der reguläre Ausdruck.
Er müsste sowas ausdrücken wie „Gib mir alles, was nicht ist“

Wie kann ich das umsetzen?

Mit [^]* nimmt er sich leider nicht die genaue Zeichenkette

Danke und Gruß
Christoph

Ahh, so ist das :smile:
Hey an die Mitleser!

Durch intensivere Web Suche habe ich folgendes gefunden (Stichwort non-greedy):
(.*?)

Für meinen Fall lautet also der Ausdruck:
s/]*>(.*?)//g

Funktioniert einwandfrei!

Gruß Christoph

Hallo,

„Alles, was nicht ist“, kannst du schreiben als

(?:frowning:?!).)\*

(Zumindest mit Perl 5 Regexes)

Das benutzt einen negativen look-ahead.

Du kannst zwar auch .*? nehmen, musst aber aufpassen, weil wenn dahinter noch eine Regex kommt, die fehlschlaegt, kann das .*? backtracken, und auch matchen.

Alles in Allem ist es nicht sonderlich robust, HTML mit Regexes zu parsen, da empfehle ich eher sowas hier:

http://search.cpan.org/perldoc?HTML::TreeBuilder

Gruesse,
Moritz