yetanotheruser: Regulärer Ausdruck gesucht

Beitrag lesen

und jetzt versuch mal mit negative look-aheads die negation von
  /[1]{2,}@domain.de$/
zu basteln.

Und wer will das?

oh, glueck gehabt. es geht z.b. mit

/^(?![a-z]{2,}@domain.de$)/

also fast ohne trickserei. aber dass man das ^ ausserhalb der klammer notieren muss und das $ innerhalb der klammer, ist imho bereits trickserei genug, zu behaupten, dass die negation via negative look-aheads eben nicht immer so direkt moeglich ist.

Wo habe ich denn gesagt, dass es für alle Fälle möglich sein soll? Es geht hier doch um genau einen konkreten Fall.

nun gut, aber was ist z.b. mit der negation von /[a-z]{2,}@domain.de$/ ?

Und wo genau hab ich gesagt, dass das damit gehen soll?

/(?<![a-z]{2,}@domain.de)$/

funzt nicht, weil negative look-behinds nicht variabler laenger sein duerfern (zumindest in perl).
aber halt! mit negative look-aheads geht das deiner meinung nach ja direkt. also wie lautet der "direkte" ausdruck?

Wo genau habe ich das gesagt?

Ansonsten brauchts für das Beispiel des OP die variable Anzahl der Buchstaben nicht beim negativen Matchen. Wenn der Ausdruck nach dem letzten @ nicht domain.de entspricht, dann soll der Ausdruck nicht matchen.

Hier habe ich allerdings eine Ungenauigkeit reingebracht, da damit auch Ausdrücke akzeptiert würden, die vor dem @ nicht 2 Buchstaben haben. Könnte man mit einem negativen look-behind umgehen:
(?<![a-z]{2}])@(?!domain.de)
Damit matched der Ausdruck immer dann, wenn die E-Mail nicht aus zwei Buchstaben, @ und domain.de besteht.

Wenn ich hier falsch liege, dann korrigiere mich.

Und wie gesagt, ich habe nicht gesagt, dass mit negativem look-ahead alles möglich ist, aber die Anforderung des OP ist möglich.

Gruß Ben


  1. a-z ↩︎