2012-02-03 15 views
8

Eventuali duplicati:
regex for URL including query stringottenere l'URL da un testo

ho un testo o un messaggio.

Ehi! provare questo http://www.test.com/test.aspx?id=53

La nostra esigenza è quella di ottenere link da un text.We utilizzano seguente codice

List<string> list = new List<string>(); 
Regex urlRx = new 
Regex(@"(?<url>(http:|https:[/][/]|www.)([a-z]|[A-Z]|[0-9]|[/.]|[~])*)", 
RegexOptions.IgnoreCase); 

MatchCollection matches = urlRx.Matches(message); 
foreach (Match match in matches) 
{ 
    list.Add(match.Value); 
} 
return list; 

Dà url, ma non l'one.Output completa del codice è

http://www.test.com/test.aspx

Ma abbiamo bisogno di url completo come

http://www.test.com/test.aspx?id=53

si prega di suggerire come risolvere che issue.Thanks in anticipo.

+0

Dai un'occhiata a questa domanda [Stack Overflow] (http://stackoverflow.com/questions/2343177/regex-for-url-including-query-string), credo che risolverà il tuo problema. – Bibhu

+0

Controlla [questa pagina] (http://daringfireball.net/2010/07/improved_regex_for_matching_urls) per un Regex completo per la ricerca e l'URL nascosto nel testo del reguler. Se hai bisogno di qualcosa di più semplice, penso che sia commentato abbastanza bene da essere in grado di adattarlo al tuo caso particolare. –

risposta

14

Prova questo regex, restituisce la stringa di query anche

(http|ftp|https)://([\w+?\.\w+])+([a-zA-Z0-9\~\!\@\#\$\%\^\&\*\(\)_\-\=\+\\\/\?\.\:\;\'\,]*)? 

È possibile verificare su gskinner

+2

Sembra un po 'troppo esplicito. '(Ftp | https?): // [^ \ s] +' funziona? –

+0

+1 @zapthedingbat Funzionerà anche –

7
public List<string> GetLinks(string message) 
{ 
    List<string> list = new List<string>(); 
    Regex urlRx = new Regex(@"((https?|ftp|file)\://|www.)[A-Za-z0-9\.\-]+(/[A-Za-z0-9\?\&\=;\+!'\(\)\*\-\._~%]*)*", RegexOptions.IgnoreCase); 

    MatchCollection matches = urlRx.Matches(message); 
    foreach (Match match in matches) 
    { 
     list.Add(match.Value); 
    } 
    return list; 
} 

var list = GetLinks("Hey yo check this: http://www.google.com/?q=stackoverflow and this: http://www.mysite.com/?id=10&author=me"); 

Esso troverà i seguenti tipi di collegamenti:

http:// ... 
https:// ... 
file:// ... 
www. ... 
1

Se stai usando questi URL più tardi sul tuo codice (estraendo una parte, querystring o ecc.) per favore der using

Uri classe combinata con HttpUtility helper.

Potrebbe aiutarti con queste operazioni.

Problemi correlati