2009-07-17 9 views
0

J'ai une liste énorme de URL, dans le format:Débutant: Expression régulière pour l'URL

Quel RegEx pourrais-je utiliser pour obtenir les trois dernières URL, mais manquer les deux premiers, de sorte que chaque URL sans une ville attachée est donnée, mais ceux avec des villes sont refusés?

Remarque: J'utilise Google Analytics, j'ai donc besoin d'utiliser RegEx pour surveiller mes URL avec leur fonctionnalité avancée. En ce moment, Google rejette chaque expression régulière.

+2

Voici une excellente référence http://www.regular-expressions.info/ –

Répondre

0

La solution actuelle de tj111 ne fonctionne pas - elle correspond à toutes vos URL.

En voici une qui fonctionne (et j'ai vérifié avec vos valeurs). Il correspond également, peu importe s'il y a une barre oblique ou non:

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

Généralement, la meilleure suggestion que je peux faire pour analyser les URL avec un Regex est ne pas.

Votre temps est beaucoupbeaucoup mieux passé à trouver un libary qui existe pour votre langage dédié à la tâche des URL de traitement.

Il aura travaillé sur tous les boîtiers de bord, sera entièrement conforme à la norme RFC, sera sans bug, sécurisé et aura une interface utilisateur géniale pour que vous puissiez simplement aspirer les bits que vous voulez vraiment. Dans votre cas, la manière suggérée pour le traiter serait, en utilisant votre bibliothèque d'URL, d'extraire les éléments et ensuite de travailler explicitement dessus.

De cette façon, au plus vous aurez à traiter le chemin lui-même, et ne pas avoir à se soucier tant wether son

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

Sauf si vous voulez vraiment.

Pour le "Chemin", vous pourriez même souhaiter utiliser un séparateur (ou un analyseur de chemin dédié) pour marquer d'abord le chemin dans les éléments juste pour être sûr.

+0

Les gens qui me donnent des downvotes en raison de ma réponse ne sont plus pertinents, veuillez considérer que la réponse a été postée * avant * à l'OP indiquant qu'il était en dehors d'un langage de programmation. Dans un langage de programmation utilisant une bibliothèque d'analyse syntaxique * est toujours la meilleure solution. –

+0

(la seule bonne raison de ne pas simplement supprimer cette réponse est que d'autres personnes pourraient involontairement venir ici en pensant que la réponse est d'utiliser une regex, ne voyant pas les google-analytics en tant que partie majeure. –

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

matchs s'ils sont tous le même site avec le « dest » là-bas. vous pouvez aussi le faire:

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

qui correspond à tout site avec une protocal (http, ftp) et tout autre site avec le/dest/pays à la fin, et une option/

Notez que cela ne fonctionnera qu'avec un sous-ensemble de ce que les urls pourraient légitimement être.

0

Essayez cette expression régulière:

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

Cela ne correspond aux trois dernières URL.