gegenteil von / alles außer (bei regexp)
sandra
- php
Hallo,
gibt es bei RegExp die Möglichkeit zu sagen, finde "alles außer"?
Alsomöchte per preg_replace folgendes Muster ersetzen:
|<a href="#(.*)">|iU
AUßER, wenn hinter der # "unten" steht. Also alle Anker, die nicht auf #unten verweisen.
Natürlich könnte ich eine callback benutzen, die eine Funktion zum ersetzen aufruft, aber wenn es durch ein einfaches |<a href="#(.*!="unten")">|iU gehen würde währe das natürlich performanter..
Danke
sandra
Hallo, sandra!
"beliebige Zeichen außer #" definiert man bei preg-Regexp mit [^#].
Gruß, LX
danke! probiere ich gleich mal aus.
"beliebige Zeichen außer #" definiert man bei preg-Regexp mit [^#].
Das war nicht gefragt und @sandra, [^#unten] führt höchstens unter sehr begrenzten und wahrscheinlich nicht vorliegenden Bedingungen zum Ziel.
Das war nicht gefragt und @sandra, [^#unten] führt höchstens unter sehr begrenzten und wahrscheinlich nicht vorliegenden Bedingungen zum Ziel.
Nach erneuter Betrachtung: eine negative lookahead assertion ist wohl schlauer :D https://forum.selfhtml.org/?t=195815&m=1311070
gibt es bei RegExp die Möglichkeit zu sagen, finde "alles außer"?
Wie wärs mit "ungleich"? - das nötige Zeichen ist das Zirkumflex (^)
Mögliche Suchbegriffe für deine weitere Recherche sind "negate character class PCRE PHP circumflex" sowie ein Blick in die Dokumentation.
bin immer dankbar für begriffe, nach denen ich suchen kann! lieben dank!
Hallo!
Natürlich könnte ich eine callback benutzen, die eine Funktion zum ersetzen aufruft, aber wenn es durch ein einfaches |<a href="#(.*!="unten")">|iU gehen würde währe das natürlich performanter..
Ja, es gibt Lookarounds.
Du brauchst hier einen negativen Lookahead.
Das könnte so aussehn, wenn ich es richtig verstanden habe. Also wenn nicht die Zeichenfolge "unten" nach der Raute kommt:
$pattern = '~<a href="#(?!unten)[^"]+">~i';
Schöne Grüße und viel Spaß,
Jonny 5