Jonny 5: REGEX Ical

Beitrag lesen

Huhu,

war ja mein Ansatz auch so:

BEGIN:(VEVENT) ("Nimm alles es sei denn es ist ein END:$VEVENT") END:$VEVENT

'/BEGIN:(VEVENT)([^(?:END:\1)]*)END:\1/si'

Es ist innerhalb einer Zeichenklasse definiert.

Es würde sagen:

Nimm alles, was keine ( ? : E N D \ 1 ) sind, davon möglichst viel.
Das wäre wie zB [)(1END:?\\] -> es steht innerhalb eckiger Klammern, wird also als Menge von Zeichen interpretiert.

Vielleicht hättest einen negativen Lookahead gemeint, wie zB (.(?!\END:\1))+
Aber viel zu mühsam, finde ich. Es gibt endlose Möglichkeiten, banale Probleme auf komplizierte Weise zu lösen.

Für dieses Problem gibt es übrigens natürlich auch viele Möglichkeiten ohne regex.

Viele Grüße, Jonny 5