AlexBausW: bzw. (PHP) regular expressions

Beitrag lesen

Hallo Brand,

  1. ist es möglich (und wenn ja, wie) bei regular Expressions in der Maske eine _Zeichenkette_ auszuschließen. D.h. ich möchte einen Treffer erhalten wenn in einem String eine bestimmte Zeichenkette NICHT vorkommt.

Das kannst Du afaik ab Perl 5.00X mit vorausschauender Suche:
-> /irgendwas(?!wasanderes)nochwas/  findet "irgendwas" auf das auf keinen Fall "wasanderes" folgt.
Geht aber auch umgekehrt:
-> /irgendwas(?=wasanderes)nochwas/  findet "irgendwas" auf das auf jeden Fall "wasanderes" folgt.

Aber Achtung: "wasanderes" erscheint afaik nicht im Suchergebnis $& (wäre ja auch unerwünscht ;-), und kann nicht via $1 ... $X referenziert werden.

<untested>
Eine weitere Möglichkeit wäre, $` (alles was vor dem Suchergebnis liegt) bzw. $' (alles was nach dem Suchergebnis liegt) nach dem Ausdruck zu durchsuchen, der nicht vorkommen darf.
Gerade fällt mir noch was ein (das zwar imho der 2. Möglichkeit entspricht, aber nicht unterschlagen werden soll :-):
-> /(.*?)(irgendwas)(.*?)/   und dann $2 in $foo (das wollte ich schon immer mal sagen ;-) speichern, und $1 bzw. $3 nach "wasanderem" durchsuchen, bevor Du weiterarbeitest.
</untested>

Die letzten "beiden" Möglichkeiten gehen aber davon aus, das "irgendwas" gut vom Rest zu unterscheiden (d.h. bekannt) ist. <spass style="netlustig"> [Aufgabe: a) Was findet /(.*)(.*)(.*)/ ? b) Was steht in $1, $2, $3 ? ] </spass>
Wenn Du ein wenig experimentierst, findest Du mit Sicherheit die passende Möglichkeit (<selbsgeiseln style="schmerzen:aua">die letzten beiden erscheinen irgendwie viel zu aufwendig</selbsgeiseln>  <g> ich hoffe das wird nicht vom Valligator gefressen</g>)

  1. kennt jemand eine gute online-Dokumentation über regular Expressions nach POSSIX (nicht nur eine kurze Einführung)

Bei POSSIX kenn ich mich leider auch nicht aus (mangels Beschäftigung mit dem fM :-)

Grüße
         AlexBausW

P.S.: Ich hoffe das Posting ist politisch (und inhaltlich) korrekt ;-)