2009-06-30 64 views
0

我是新來的正則表達式,並沒有任何線索從哪裏開始,它就像一個差異的語言給我。但我需要一個快速完成任務。正則表達式來獲取文件的路徑,而無需域

我需要

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

,並從中得到公正

/folder1/folder2/file_path.txt 

謝謝!

+1

沒有正則表達式,這樣做更容易;是正則表達式的一個要求? – 2009-06-30 05:31:38

回答

4

從中構建一個URI對象和它的屬性之一將有你想要的東西。

2

我認爲,正則表達式應該工作:

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

(與Python測試)

+0

不是非常通用,但確實回答了問題。 – BCS 2009-06-30 05:39:16

0

由於VB.NET是在這個問題上的標籤,我假設你在服務器端的訪問要求對象:

Dim instance As HttpRequest 
Dim value As String 

value = instance.Path 

這應該給你你所要求的。


編輯:關於第二個想法 - 你可以從一些輸入字符串解析URL ......在這種情況下,如果你有一個輸入一個簡單的(常規)組正則表達式只會幫助:

你知道所有可能的域名嗎?即「http://www.ABC.com」和「http://www.DEF.com」唯一可能的域?

然後在這裏:

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

支持更多的協議,使該協議可選了。

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