Passende URL mit wildcards
Ich versuche, entspricht URLs mit Platzhaltern, um die tatsächlichen URLs. Zum Beispiel:
http://*google.com/*
Übereinstimmen muss
http://maps.google.com
Und
http://www.google.com/maps
Was wäre der beste Weg zu gehen über diese?
Ich habe versucht, mit einem regulären Ausdruck und das klappt einwandfrei, wenn ich manuell das Programm, aber ich bin mir nicht sicher, ob es möglich ist, dynamisch zu generieren, reguläre Ausdrücke oder wenn, dass wäre die beste Vorgehensweise in dieser situation.
/(http|https):\/\/.*\.?google\.com\/?.*/i
Dank sehr viel.
- Watchout für das Problem aufgezeigt von @Sjoerd
- Was war deine Lösung @sam-Werfer?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ersetzen Sie alle vorkommen von
*
im Muster mit[^ ]*
- es findet eine Folge von null oder mehr nicht-Leerzeichen.Damit
http://*google.com/*
wirdhttp://[^ ]*google.com/[^ ]*
Hier ein regulärer Ausdruck ist, die Aufgabe zu tun:
Erzeugung eines regex ist wohl der richtige Weg, aber ist komplizierter als ersetzt einfach die Sternchen.
Beispielsweise Ihre Muster
http://*google.com/*
sollte nicht mithttp://www.malicioushacker.org/1337/google.com/maps
.Wenn Sie möchten, um zu sehen, eine gut getestete Bibliothek zur Extraktion von teilen einer URI, würde ich prüfen, Google Closure Library ist goog.uri.utils Methoden.
https://github.com/google/closure-library/blob/8e44fb343fff467938f9476ba7f727c6acac76d8/closure/goog/uri/utils.js#L187
Hier ist die regex, die schweres heben: