• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

RegEx - Kein Ansatz (steh auf'm Schlauch)

Status
Für weitere Antworten geschlossen.

Artemis

Neues Mitglied
Hallo,

ich steh grad voll auf'm Schlauch.
Ich brauche einen RegEx, der alle Strings (Dateinamen) nach dem Muster .+\.[a-z0-9]+ durch $1.gif ersetzt. Das heißt bei allen Dateinamen wird die Endung durch gif ersetzt.
Nur sollen Dateien, die schon eine gif-Endung haben nicht verändert werden.

Edit:
Das heißt ich bräuchte so etwas:
.+\.([a-z0-9]+|gif), bei dem jedoch das gif negiert wird.

Also meine Frage:
Wie kann ich den Teil eines Subpatterns negieren?
 
Zuletzt bearbeitet:
Werbung:
Wenn *.gif die Einzige Dateiendung ist die mit 'g' beginnt könnte folgender Ausdruck genügen:
Code:
(.*)\.[^g]
 
Werbung:
Wenn überhaupt kann ich Arbeit investieren. ;-)

Ich hab jetzt folgendes:
Code:
^.+\.(?!gif)[a-z0-9]+$
Das matcht zwar auch keine sachen wie d.gifs oder hs.gifzs aber erstmal reichts.

Würde mich aber freuen, wenn einer was besseres weiß.

Edit:
Mist, das klappt beim mod_rewrite irgendwie nicht. Ich krieg nen 500.
 
Werbung:
Weil es
  1. bei folgendem PHP-Code funktioniert (also keine Fehler):
    PHP:
    <?php
    echo preg_match('@^.+\.(?!gif)[a-z0-9]+$@', 'bild.gif');
    ?>
  2. bei dem RegEx-Tester funktionier (keine Fehler) (http://www.regexlib.com/RETester.aspx)
  3. bei folgender .htaccess:
    Code:
    RewriteEngine On
    
    RewriteRule ^(.+)\.(?!gif)[a-z0-9]+$ $1.gif
    einen 500 Internal Server Error erfolgt

Und zu dem Krümelkacker:
Was meinste, wofür der Smilie war? ;-)
 
1. Zu Ausdruck selber:
Wenn du vor und nach dem 'gif' noch den modifier '\b' setzt sollte es funktionieren.
Code:
^(.+)\.(?!\bgif\b)[a-z0-9]+$
2. Schau dir mal in den Kapiteln über RewriteCond und ReriteRule %{REQUEST_FILENAME} und die entsprechenden Zusatzoptionen (-f, -d) an.
3. Ich weiss schon wie der Smily zu deuten war. Mein Kommentar ist ja auch nicht sonderlich ernst zu nehmen ;-)
 
Oh Mist, natürlich.

Ich hab einfach nicht daran gedacht, vorher den Request-Filename auszuwerten.

Danke.

PS:
Habs jetzt so:
Code:
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !^.*\.gif$
RewriteRule ^(.+)\.[a-z0-9]+$ $1.gif
 
Werbung:
Status
Für weitere Antworten geschlossen.
Zurück
Oben