2013-03-20 131 views
0

我試圖從一個字符串中拉出一個URL,稍後使用它創建一個超鏈接。我想能夠做到以下幾點: - 確定輸入字符串包含一個URL - 從輸入字符串 刪除URL - 提取的URL存儲在變量中供以後使用C#替換URL正則表達式

誰能幫助我有了這個?

+1

應當指出的是,沒有幾個例子,這個任務幾乎是不可能更換輸入。 – Destrictor 2013-03-20 18:34:36

+0

我在我自己的代碼中使用了這個工具。我有正規表達的體面,但能夠快速高效地測試它們,並幫助構建它們,這是真正的無價之寶。如果我有點損失,我會很樂意捐贈給這位開發人員。 http://www.ultrapico.com/Expresso.htm – Nevyn 2013-03-20 18:39:11

+1

http://madskristensen.net/post/Resolve-and-shorten-URLs-in-Csharp.aspx不錯的起點 – 2013-03-20 18:40:02

回答

3

這裏是在流行的格式識別的網址,如偉大的解決方案:

使用正則表達式是:

/((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w][email protected])?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w][email protected])[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)/ 

不過,我會建議你去http://blog.mattheworiordan.com/post/13174566389/url-regular-expression-for-links-with-or-without-the看到工作的例子。

0

與輸入

 string input = string.Empty; 
     var matches = Regex.Matches(input, 
         @"/((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w][email protected])?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w][email protected])[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[.\!\/\\w]*))?)/"); 
     List<string> urlList = (matches.Cast<object>().Select(match => match.ToString())).ToList();