2009-06-30 9 views
0

Je suis nouveau pour les expressions régulières, et je n'ai aucune idée par où commencer, c'est comme une langue diff pour moi. Mais j'ai besoin d'un rapide pour accomplir une tâche.RegEx pour obtenir le chemin du fichier, sans domaine

Je dois prendre

http://www.domain.com/folder1/folder2/file_path.txt 

et obtenir juste

/folder1/folder2/file_path.txt 

de lui.

Merci!

+1

Ceci est beaucoup plus simple à faire sans regex; est regex une exigence? –

Répondre

4

construire un objet URI à partir de lui et l'une des propriétés de celui-ci aura ce que vous voulez.

2

Je pense que regex devrait fonctionner:

^http://.*?/(.*)$ 

(testé avec Python)

+0

pas très générique mais répond à la question. – BCS

0

Depuis VB.NET est dans la balise pour cette question, je suppose que vous avez accès au côté serveur à la Demande d'objet:

Dim instance As HttpRequest 
Dim value As String 

value = instance.Path 

Cela devrait vous donner exactement ce que vous avez demandé.


Edit: bien y réfléchir - vous pourriez être une analyse syntaxique des URL de chaîne d'entrée ... dans ce cas, regex ne vous aider si vous avez un ensemble d'entrées simples (régulier):

Connaissez-vous tous les domaines possibles? c'est-à-dire "http://www.ABC.com" et "http://www.DEF.com" les seuls domaines possibles?

Puis ici:

Dim text As String = "http://www.ABC.com/folder1/folder2/file.txt" 
Dim pattern As String = "(?:http://www.ABC.com|http://www.DEF.com)(.*)" 

Dim r As Regex = new Regex(pattern, RegexOptions.IgnoreCase) 

' Match the regular expression pattern against a text string. 
Dim m As Match = r.Match(text) 
Dim g as Group = m.Groups(2) 'Gives the string matched by the capturing parentheses 
0

Soutenir plusieurs protocoles et de rendre le protocole facultatif aussi.

((https?|ftp)://)?(.*?)/(.*) 
Questions connexes