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