Hallo Tom!
Ich muss da immer noch überlegen, bis ich weiß, welche von beiden die richtige ist...
Die Problemstellung ist, einen Treffer zu erzielen, wenn eine bestimmte Zeichenkette nicht vorkommt (negative Zeichenkette). Was in aller Regel übersehen wird, was man aber unbedingt wissen muss - dies geht nur unter einer ganz bestimmten Bedingung.
Die "negative Zeichenkette" muss unmittelbar an eine bekannte Zeichenkette, an ein "bekanntes Musterelement", gekoppelt sein.
Entweder muss man ein eindeutiges Musterelement unmittelbar vor oder unmittelbar hinter der "negativen Zeichenkette" kennen, alleine mit der "negativen Zeichenkette" geht es nicht, kann es gar nicht gehen.
Fall 1: bekanntes Musterelement gefolgt von negativer Zeichenkette => Musterelement plus negativer Lookahead
Fall 2: negative Zeichenkette gefolgt von bekanntem Musterelement => negativer Lookbehind plus Musterelement
Im Beispiel ist das "bekannte Musterelement" der Textanfang (bzw. Zeilenanfang), also »^«, gefolgt von der "negativen Zeichenkette", also Fall 1.
Die Sache ist einfach, es wird nur gedanklich falsch herangegangen. Da wird nur die "negative Zeichenkette" gesehen und das "bekannte Musterelement" vollkommen übersehen. Man muss es genau anders herum angehen.
Die "negative Zeichenkette" interessiert erst einmal überhaupt nicht, es interessiert zunächst einzig und allein das "bekannte Musterelement", denn dieses muss ich zwingend treffen, also entwerfe ich das entsprechende Musterelement und von mir aus auch gleich das Gesamtmuster. Ob ich dann vor dem "bekannten Musterelement" einen Lookbehind oder nach dem "bekannten Musterelement" einen Lookahead setzen muss, ergibt sich eigentlich von selbst.
Ich hoffe, ich habe das auf die Schnelle richtig und verständlich erklärt.
Gruß Uwe