Negative Lookahead-Assertion - Problem

Klein0r

Erfahrenes Mitglied
Hallo zusammen.

Ich habe folgenden regulären Ausdruck:

PHP:
$pattern = '/([\w]{4}+:\/\/[\w-?&;#~=\.\/\@]+[\w\/])/i';

Nun möchte ich realisieren, dass es kein Match ist wenn dem Ausdruck eine eckige Klammer zu oder ein Gleichheitszeichen vorrausgeht! Ich weiß nicht wie ich das realisieren soll.
Ich bin einfach nicht fit genug in regulären Ausdrücken!

Hier mein Versuch ohne Erfolg:
PHP:
$pattern = '/(?!(=|\]))([\w]{4}+:\/\/[\w-?&;#~=\.\/\@]+[\w\/])/i';

Was mache ich falsch?

lg
 
Wozu sollte hier eine Lookahead-Assertion sinnvoll sein? Diese wäre in diesem Fall immer wahr, da \w für ein Wortzeichen steht, also niemans „=“ oder „]“ sein kann.
Wenn dann sollte es eine Lookbehind-Assertion sein:
Code:
/(?<!=|\])([\w]{4}:\/\/[\w-?&;#~=\.\/@]+[\w\/])/i
 
Danke!

Funktioniert perfekt ;)
Aber erst nachdem du es editiert hast :D
Ich finde ich war aber schon relativ nah drann!

lg
 
Zurück