gudn tach!
/Test1: (?<!nein--)(.*?) Ende/
du hast dir zwar mittlerweile schon eine loesung erarbeitet, dennoch kurz fuer's archiv die erklaerung, dass obiger regexp _niemals_ matchen kann:
(?<!schwazze) ist eine zero-width negative look-behind assertion, das heisst
/(?<!schwazze)schoggo/
matcht ein "schoggo", dem kein "schwazze" voransteht. das "schwazze" selbst wird nicht gematcht.
print $1 if 'weisseschoggo'=~/((?<!schwazze)schoggo)/;
liefert also "schoggo".
dagegen liefert
print $1 if 'weisseschoggo'=~/(weisse(?<!schwazze)schoggo)/;
tatsaechlich "weisseschoggo", allerdings wird hier auch deutlich, dass "(?<!schwazze)" hier nun voellig ueberfluessig ist, da ja bereits verlangt wird, dass vor dem "schoggo" der string "weisse" steht. somit kann ja auch gar nicht mehr "schwazze" vor "schoggo" stehen.
deshalb ist der ausdruck
/(weisse(?<!schwazze)schoggo)/
aequivalent zu
/(weisseschoggo)/
und somit ist
/Test1: (?<!nein--)(.*?) Ende/
aequivalent zu
/Test1: (.*?) Ende/
d.h., das "nein--" wird gar nicht beachtet.
prost
seth