Eben ist mit aufgefallen, dass alles was ich den ganzen Tag versucht habe totaler Quatsch war.
Ich habe z.B. folgende RegEx:
Es sollen alle Tags gefunden werden außer a, b, i, br, img ... usw.
Da ich die Auswahl negativieren muß habe ich alle relevanten Tags in eine Zeichenklasse gepackt, da man diese nagativieren kann.
Nun ist mir aber aufgefallen, dass es ja Zeichen-KLASSEN sind.
[img] wird also nicht "i" gefolgt von "m" gefolgt von "g" interpretiert, sonder im Sting an betroffener Stelle sind nur die Zeichen "i", "m", oder "g" erlaubt, die Reihenfolge pielz keine Rolle. So z.B. auch [a-z].
So, nun endlich meine Frage: Wie kann ich denn eine ganze RegEx negativieren ohne Zichenklassen zu benutzen?
Also, erkenne mir alles AUßER "br" oder "img" oder "ul"... usw.
Und weils so schön ist noch eine Spur schwieriger:
Erkenne alle <table .*> Tags, außer <table name="mytable" .*>
Es soll einerseits positiv "<table" erkannt werden und alles ".*" was es sonst noch an Attributen gibt, aber nur wenn nicht name="mytable" darin vorkommt.
Also eine Negation , die ansich ja nicht in einer Zeichenklasse stehen kann.
Wie geht das?
Dank & Grüße,
Andi
Ich habe z.B. folgende RegEx:
PHP-Code:
$content = preg_replace("#<([^(a|b|i|br|img|ul|li|table|tr|td)]) .+>(.*)</\\1>#isUS", "\\2", $content);
Da ich die Auswahl negativieren muß habe ich alle relevanten Tags in eine Zeichenklasse gepackt, da man diese nagativieren kann.
Nun ist mir aber aufgefallen, dass es ja Zeichen-KLASSEN sind.
[img] wird also nicht "i" gefolgt von "m" gefolgt von "g" interpretiert, sonder im Sting an betroffener Stelle sind nur die Zeichen "i", "m", oder "g" erlaubt, die Reihenfolge pielz keine Rolle. So z.B. auch [a-z].
So, nun endlich meine Frage: Wie kann ich denn eine ganze RegEx negativieren ohne Zichenklassen zu benutzen?
Also, erkenne mir alles AUßER "br" oder "img" oder "ul"... usw.
Und weils so schön ist noch eine Spur schwieriger:
Erkenne alle <table .*> Tags, außer <table name="mytable" .*>
Es soll einerseits positiv "<table" erkannt werden und alles ".*" was es sonst noch an Attributen gibt, aber nur wenn nicht name="mytable" darin vorkommt.
Also eine Negation , die ansich ja nicht in einer Zeichenklasse stehen kann.
Wie geht das?
Dank & Grüße,
Andi
Kommentar