Dateinamen ersetzen

26/09/2008 - 17:07 von Stefan Simon | Report spam
Hallo,

ich habe eine Datei, die absolute und relative Pfadangaben enthalten kann.
Die relativen möchte ich nun durch absolute Pfadangaben ersetzen. Vorhande
absolute sollen durch die neue absolute ersetzt werden.

IST:
<href>Logentry.png</href>
...tr><td><img src="Log2773.jpg" width="30...
<href>http://www.alteurl.com/Logentry.png</href>
...tr><td><img src="http://www.alteurl.com/Log2773.jpg" width="30...

SOLL:
<href>http://www.neueurl.com/Logentry.png</href>
...tr><td><img src="http://www.neueurl.com/Log2773.jpg" width="30...
<href>http://www.neueurl.com/Logentry.png</href>
...tr><td><img src="http://www.neueurl.com/Log2773.jpg" width="30...

folgendes scheint für die relativen Pfadangaben zu funktionieren:
TestString = "<href>Logentry.png</href>"
TestString = _
New Regex("\<href\>([a-z1-9].*)\.(jpg|png)", RegexOptions.IgnoreCase) _
.Replace(TestString, "<href>http://www.neueurl.com/" & "$1.$2")

bzw.
TestString = "...tr><td><img src="Log2773.jpg" width="30..."
TestString = _
New Regex("img src=""([a-z1-9].*)\.(jpg|png)""", _
RegexOptions.IgnoreCase) _
.Replace(TestString, "img src=""http://www.neueurl.com/" & "$1.$2""")


Ich bekomme das mit den absoluten Pfadangaben nicht hin, da kommt dann immer
sowas bei raus:
<img src="http://www.neueurl.com/Http://www.test.com/Logentry.png" w...


Kennt sich jemand mit regexen aus und kann mir helfen oder hat jemand eine
bessere Idee, wie man an die Sache herangehen kann?

tia,
Stefan Simon
 

Lesen sie die antworten

#1 Gerold Mittelstädt
27/09/2008 - 11:22 | Warnen spam
Hallo,

Stefan Simon schrieb:
ich habe eine Datei, die absolute und relative Pfadangaben enthalten kann.
Die relativen möchte ich nun durch absolute Pfadangaben ersetzen. Vorhande
absolute sollen durch die neue absolute ersetzt werden.

IST:
<href>Logentry.png</href>
...tr><td><img src="Log2773.jpg" width="30...
<href>http://www.alteurl.com/Logentry.png</href>
...tr><td><img src="http://www.alteurl.com/Log2773.jpg" width="30...

SOLL:
<href>http://www.neueurl.com/Logentry.png</href>
...tr><td><img src="http://www.neueurl.com/Log2773.jpg" width="30...
<href>http://www.neueurl.com/Logentry.png</href>
...tr><td><img src="http://www.neueurl.com/Log2773.jpg" width="30...

folgendes scheint für die relativen Pfadangaben zu funktionieren:
TestString = "<href>Logentry.png</href>"
TestString = _
New Regex("\<href\>([a-z1-9].*)\.(jpg|png)", RegexOptions.IgnoreCase) _
.Replace(TestString, "<href>http://www.neueurl.com/" & "$1.$2")

bzw.
TestString = "...tr><td><img src="Log2773.jpg" width="30..."
TestString = _
New Regex("img src=""([a-z1-9].*)\.(jpg|png)""", _
RegexOptions.IgnoreCase) _
.Replace(TestString, "img src=""http://www.neueurl.com/" & "$1.$2""")


Ich bekomme das mit den absoluten Pfadangaben nicht hin, da kommt dann immer
sowas bei raus:
<img src="http://www.neueurl.com/Http://www.test.com/Logentry.png" w...



Wie schaut denn Dein Pattern aus?

Kennt sich jemand mit regexen aus und kann mir helfen oder hat jemand eine
bessere Idee, wie man an die Sache herangehen kann?



Du darfst natürlich nicht den gesamten Treffer in die Ersetzung
einbeziehen, sondern musst so gruppieren, dass nur der Pfad verwendet wird.

(http://(?:[^/]+))?(?<pfad>/[^]*)?

http://neueurl.tld${pfad}

Das trifft auf absolute, und auf relative Pfade zu (bei denen allerding
nur, wenn sie mit / beginnen)

Viele Grüße!

Ähnliche fragen