seth_not@home: REGEX Ical

Beitrag lesen

gudn tach!

Das sieht ziemlich wirr aus ;)

allerdings. und zwar ist
  [^(?:END:\1)]
dasselbe wie
  [^()?:END\1]
da mit den brackets [] zeichenklassen beschrieben werden und die anordnung der zeichen darin mit wenigen ausnahmen egal ist. innerhalb eckiger klammern gelten andere regeln als ausserhalb, siehe z.b.
selfhtml-doku.

Ein Doppelpunkt muss durch \ escaped werden, wenn er nicht als Metazeichen interpretiert werden soll.

nee, das ist in keiner mir bekannten regexp-engine so. der doppelpunkt wird normalerweise literal verstanden. und der genannte link sgt da auch nix anderes.

Es wäre also ein ganz einfaches Muster:
/BEGIN:VEVENT(.*)END:VEVENT/sU

sogar noch einfacher:

/BEGIN:VEVENT(.*)END:VEVENT/sU

oder, falls es BEGIN:VEVENTXY geben sollte:

/BEGIN:VEVENT\s(.*)END:VEVENT\s/sU

oder eben in pcre-syntax, die dann auch ausserhalb von php funzt:

/BEGIN:VEVENT\s(.*?)END:VEVENT\s/s

das setzt u.a. voraus, dass VEVENT nicht verschachtelt vorkommen kann und dass kein BEGIN:VEVENT im code vergessen wurde.

prost
seth