webForumDet fria alternativet

Regexp, hitta alla länkar i text

.NET

3 svar · 372 visningar · startad av flaerpen

Medlem sedan mars 20084 inlägg
Frågan#1

hejsan!

hittade inte ett tillräckligt passande forum för min fråga, om regexp, men med tanke på att jag kör med .net-motorn så tänkte jag ställa frågan här.

Jag vill hitta alla länkar i en text. Kruxet är att jag inte kan hitta dem med hjälp av "a href"-taggen då länkarna står i klartext. Man måste definera dem med http://, Exempel:

Hej, http://sida1.se, http://www.sida2.com/annansida.aspx och http://sida3.nu. Finns också andra sidor som http://www.sida4.ru/mapp/index.php?id=2, https://sida5.com/safe/ samt "http://www.sida6.se/".

Alla ser ju att det är giltiga länkar men jag behöver ett regexp som plockar ut alla.

Tack på förhand

Medlem sedan okt. 200725 inlägg
#2

Här är en enkel variant som jag slängde ihop nu bara, det enda den inte klarar är länk nr 3 som slutar på en punkt. Men den kanske kan åtgärdas när/om du loopar igenom dem.

Det var ett tag sedan jag regexade så den kanske har sina små brister, men detta borde räcka ett tag iaf.

string links = @"Hej, http://sida1.se, http://www.sida2.com/annansida.aspx och http://sida3.nu. Finns också andra sidor som http://www.sida4.ru/mapp/index.php?id=2, https://sida5.com/safe/ samt ""http://www.sida6.se/"". ";

Regex r = new Regex(@"(https?://.*?)([\s,""])", RegexOptions.IgnoreCase);

MatchCollection mc = r.Matches(links);
foreach (Match ma in mc)
{
 Console.WriteLine("URL: " + ma.Groups[1].Value );
}

Console.ReadLine();
Medlem sedan juni 20019 519 inlägg
#3
string links = @"Hej, [url]http://sida1.se[/url], [url]http://www.sida2.com/annansida.aspx[/url] och [url]http://sida3.nu[/url]. Finns också andra sidor som [url]http://www.sida4.ru/mapp/index.php?id=2[/url], [url]https://sida5.com/safe/[/url] samt ""http://www.sida6.se/"". ";

try {
	links = Regex.Replace(links, @"\b(https?|ftp|file)://[-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|]", "<a href=\"$0\">$0</a>", RegexOptions.IgnoreCase);
}
catch (ArgumentException ex) {
}

//response.write(links); //links string variable have the html code now.
Medlem sedan mars 20084 inlägg
#4

Tack så mycket! Problemet är att jag har ett regex som jag använt - ett tag - men är inte nöjd, och nu behöver jag verkligen ett bra! Ska titta på det ni skrivit så fort jag får tiden. Men kom gärna med fler förslag som till och med ni själva är nöjda över :) ;)

262 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)