2009-07-17 24 views
0

Ich habe eine riesige Liste von URLs, im Format:Anfänger: Regulärer Ausdruck für URL

Mit welcher RegEx kann ich die letzten drei URLs abrufen, aber die ersten zwei verpassen, so dass jede URL ohne eine angehängte Stadt angegeben wird, aber diejenigen mit Städten abgelehnt werden?

Hinweis: Ich verwende Google Analytics, daher muss ich RegEx verwenden, um meine URLs mit ihren erweiterten Funktionen zu überwachen. Google lehnt derzeit jeden regulären Ausdruck ab.

+2

Hier ist eine große Referenz http://www.regular-expressions.info/ –

Antwort

0

Die aktuelle Lösung von tj111 funktioniert nicht - es entspricht all Ihren URLs.

Hier ist eine, die funktioniert (und ich überprüft mit Ihren Werten). Sie paßt auch, ganz gleich, ob es ein Schrägstrich ist oder nicht:

http:\/\/.*dest\/\w+/?$ 
1

Im Allgemeinen ist der beste Vorschlag, den ich für die Analyse von URLs mit einem Regex machen kann, nicht.

Ihre Zeit ist vielviel besser verbrachte libary zu finden, die für Ihre Sprache existiert, um die Aufgabe der Verarbeitung von URLs gewidmet ist.

Es wird alle Edge Cases ausgearbeitet haben, vollständig RFC-konform sein, fehlerfrei sein, sicher sein und eine großartige Benutzeroberfläche haben, damit Sie nur die Bits aussaugen können, die Sie wirklich wollen.

In Ihrem Fall wäre der vorgeschlagene Weg, es zu verarbeiten, unter Verwendung Ihrer URL-Bibliothek, extrahieren Sie das Element s und arbeiten Sie dann explizit an ihnen.

Auf diese Weise höchstens Sie mit dem Weg zu tun haben würden auf seinem eigenen, und

http://site.com/ 
https://site.com/ 
http://site.com:80/ 
http://www.site.com/ 

ob es nicht so viele Sorgen machen müssen, wenn Sie wirklich wollen.

Für den "Pfad" möchten Sie vielleicht sogar einen Splitter (oder einen dedizierten Pfad-Parser) verwenden, um zuerst den Pfad in Elemente zu token, um sicher zu gehen.

+0

Leute geben mir downvotes aufgrund meiner Antwort nicht mehr relevant sein, bitte beachten Sie, dass die Antwort * vor * an die OP, die Angabe wurde es außerhalb einer Programmiersprache. In einer Programmiersprache mit einer Parsing-Bibliothek * ist * immer noch der beste Weg zu gehen. –

+0

(Der einzige gute Grund, diese Antwort nicht einfach zu löschen, ist, dass andere unwissentlich hierher kommen und die Antwort darin besteht, eine Regex zu verwenden, die Google Analytics nicht als Hauptbestandteil zu betrachten. –

0
/http:\/\/www\.site\.com\/dest\/\w+\/?$/i 

Matches, wenn sie alle die gleiche Stelle mit dem „dest“ sind da. Sie könnte auch dies tun:

/\w+:\/\/[^/]+\/dest\/\w+\/?$/i 

, die jede Seite mit jedem protocal (http, ftp) und jede Seite mit dem/dest/Land am Ende, und eine optionale/

Hinweis übereinstimmen, dass Dies funktioniert nur mit einer Teilmenge dessen, was die URLs rechtmäßig sein könnten.

0

diesen regulären Ausdruck Versuchen:

^http://www\.example\.com/dest/[^/]+/$ 

Dies würde die letzten drei URLs nur entsprechen.