Hallo
Wo kann ich reguläre Ausdrücke in solch komplexer Form lernen?
Ich kann sie zwar _sehr_ begrenzt aus SELFhtml,
aber derartiges bekomm ich unmöglich hin.
Ich kann Reguläre Ausdrücke auch nur sehr begrenzt.
Ich gehe immer so an die Erstellung ran:
Ich schreib mir einen Text, den dieser RegExp durchlaufen soll
(In deinem Fall also bspw.:
blablabla [URL]http://www.bla.bla^seht her, das ist blah[/URL] blabla )
Dann fang ich mit dem Regexp an, und zwar erstmal das Grundgerüst
s/[URL](.*)[/URL]/<a href="$1">$1</a>/
( Das mit dem zugreifen auf die gespeicherten Werte ist wichtig und solltest du dir merken !)
Jetzt geh ich an das nächste ran (natürlich erstmal getestet), das wäre der Linktext:
s/[URL](.*)^(.*)[/URL]/<a href="$1">$2</a>/
Beim Testen finde ich dann früher oder später Probleme, in diesem Fall wenn ich mehrere Links in meinem Text drinhab, dann wird $1 nämlich Linktext1 + url2, weil der Asterisk gierig ist, dh. möglichst viel 'schlucken' will.
Also muss ich ihn auf faul einstellen (? hintendran).
s/[URL](.*?)^(.*?)[/URL]/<a href="$1">$2</a>/
Nächster Punkt: ich überlege mir die Modifier.
In deinem Fall also g, weil es sein kann, dass mehrere Links in einer Zeile (oder in einem Posting) stehen.
Auch fällt mir ein, dass ich statt * auch + nehmen kann, da die Url und der Linktext ja mindestens ein Zeichen lang sein sollten.
Ich komme jetzt auf folgende Lösung:
s/[URL](.+?)^(.+?)[/URL]/<a href="$1">$2</a>/g
Und bei jedem Schritt teste ich, weil ich mein Wissen nicht auf die Probe stellen will und auf unagenehme Nebeneffekte prüfe.
Tschö Matti