Reguläre Ausdrücke: alles außer

Ich möchte mit einem Proxy-Server auch ein wenig den Inhalt, bzw. die Verlinkung im Inhalt verändern. Das geht recht gut mit Substitute.

Mein Problem war bisher, dass ich einen regulären Ausdruck gesucht habe, mit dem ich alle Links, die nicht mit einem bestimmten Pfad anfingen, umschreiben konnte.

Beispiel:

<a href=“/alterkram/test“>LINK</a>

sollte im neuen Dokument so ausgeliefert werden:

<a href=“http://neues.blafasel.yourweb.de/test“>LINK</a>

Alle anderen Links, die mit einem „/“ anfangen, sollen so umgeschrieben werden:

<a href=“/andererkram/test“>LINK</a>

Im neuen Dokument so:

<a href=“http://blafasel.yourweb.de/andererkram/test“>LINK</a>

Lösung:

Alles was mit /alterkram anfängt wird für die neue Subdomain umgeschrieben:

Substitute „s|\“/alterkram/|\“http://neues.blafasel.yourweb.de/|i“

Alles was nicht mit /alterkram anfängt wird auf die alte Domain verlinkt:
Substitute „s|href=\“/(?<!alterkram)(\S*)\“|href=\“http://blafasel.yourweb.de/$1$2\“|i“

Lookbehind:

Alles außer kann man also mit (?<!text) abfangen – sehr nützlich, wie ich finde 😉 Weitere Informationen dazu findet man u.a. hier.

Tags: ,

Kommentiere

*