Regex für static content suche

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
erselbst
User
Beiträge: 7
Registriert: Mittwoch 20. März 2013, 08:05

Hallo!

Ich möchte gern mit folgende Regex alle Static Content Einträge aus dem Logfile filtern/suchen.

Code: Alles auswählen

/\.(css|js|png|jpg)(\?|)/
Ich würde jetzt *.css, *.js, *.png und *.jpg Ergebnisse erwarten. Leider werden dabei auch Einträge wie *.jsp und *.jspdbx gefunden.

Wie bekomme ich das hin, dass der Ausdruck nicht so gierig ist und *.jsp und *.jsdbx nicht gefunden werden? Zu beachten ist, dass ein z.B. CSS file auch ein Querystring wie custom.css?v=123456 haben kann.

Kann mir da jemand auf die Sprünge helfen?


Viele Grüße
Marko
Benutzeravatar
__blackjack__
User
Beiträge: 13117
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Eventuell so etwas "\.(css|js|png|jpg)(\W|)"?
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

Dann mußt Du halt Deinen regulären Ausdruck entsprechend anpassen, indem Du z.B. ein Wortgrenze forderst:

Code: Alles auswählen

/\.(css|js|png|jpg)\w/
erselbst
User
Beiträge: 7
Registriert: Mittwoch 20. März 2013, 08:05

Ich denke ich hab es jetzt:

Code: Alles auswählen

\/([^\/]+?\.(?:css|js|png|jpg))(?:\?|\s)
Dieser Ausdruck hat mir *.css, *.js, *.png und *.jpg angezeigt aber *.jsp und *.jsdbx wurden jetzt ausgelassen.

Cool, manchmal brauch man nur ein/zwei Gedankengänge von anderen um auf die Lösung zu kommen :D

Vielen Dank, Euch allen!
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

Und warum nicht den einfachen Weg über Wortgrenze \W?
erselbst
User
Beiträge: 7
Registriert: Mittwoch 20. März 2013, 08:05

Uff, stimmt. Der ist noch einfacher:

Code: Alles auswählen

\/([^\/]+?\.(?:css|js|png|jpg))\W
narpfel
User
Beiträge: 645
Registriert: Freitag 20. Oktober 2017, 16:10

Eine Wortgrenze ist eigentlich `\b`; `\W` erfordert, dass da noch ein Zeichen nach der Dateiendung kommt. Das funktioniert also unter Umständen nicht, wenn der gesuchte Text ganz am Ende der Datei steht und die letzte Zeile kein Newline am Ende hat.
Antworten