Hallo Rolf,
die Replace-Methode verwendet $0, um den kompletten Match zu repräsentieren, und $1 bis $99 für die Gruppen im Match (sogenannte capturing groups). Jedes Klammerpaar, das Du in der Regex hast, bildet eine capturing group (es sei denn, du bildest explizit eine non-capturing group, mit (?:...) ).
Ok. Das wußte ich nicht.
Die Regex, über die wir bisher gesprochen haben, dient nur dazu, youtube-URLs auszublenden. Sie unterscheidet aber (noch) nicht zwischen dem Domain-Teil der URL und dem nachgelagerten Pfad zur Datei. Brauchst Du das? Was ist mit der URL
http://www.example.com/foo/bar.html?bin=go
- welcher Teil davon soll im Target-Parameter aufkreuzen?
Eigentlich der komplette Teil. Im Prinzip geht es darum, aus diesem oder einem ähnlichem Block die href-Attribute auszutauschen, die Url vor dem schließenden a-Tag soll natürlich erhalten bleiben. (Du erinnerst Dich an die Regex, die nicht von mir war. Die hat das ganz gut gemacht, passt aber nicht mehr, außerdem hab ich die ja eh nie verstanden 😉 )
Test
<a href="http://www.example.com">www.example.com</a><br />
<a href="https://www.example.com">https://www.example.com</a><br />
<a href="http://example.com">http://example.com</a><br />
testing
Im einfachen Fall, wenn Du also die komplette URL als target angeben willst, kannst Du $0 im Replace-Ausdruck verwenden. Allerdings nicht ganz blindlings, denn URLs haben Regeln und du musst die Zeichen der Ausgangs-URL ggf. codieren, um die als Parameter einer anderen URL angeben zu können. Ich meine, ich hätte schon mal mit Hilfe eines Replace-Callbacks gezeigt, wie das geht.
Kann m ich grad nicht erinnern. Meinst Du, dass aus z.b. & ein & werden muss?
$0 ist der komplette Match. Wenn Du nur einen Teil des Matches brauchst, dann müssen wir schauen, ob dieser Teil überhaupt als Gruppe vorhanden ist, oder ob man dafür noch eine passende Gruppe bilden muss.
Ich glaube, der komplette Match wäre ok. Aber ich krieg die Regex nicht hin, auch nicht mit Deinem Grundkonstrukt. 😕
Jörg