如何匹配c#中的URL?

Tom*_*ski 9 c# regex url

我找到了许多如何在PHP和其他语言中匹配特定类型的URL的示例.我需要匹配来自我的C#应用​​程序的任何URL.这该怎么做?当我谈论URL时,我会谈论任何网站的链接或网站和子网站上的文件等等.

我有这样的文字:"转到我的网站http:\ www.google.pl\something\blah \?lang = 5"或者我需要从此消息中获取此链接.链接只能从www开始.太.

mic*_*ele 19

如果您需要测试正则表达式以查找URL,则可以尝试使用此资源

http://gskinner.com/RegExr/

它会在你编写时测试你的正则表达式.

在C#中你可以使用正则表达式,例如如下:

Regex r = new Regex(@"(?<Protocol>\w+):\/\/(?<Domain>[\w@][\w.:@]+)\/?[\w\.?=%&=\-@/$,]*");
// Match the regular expression pattern against a text string.
Match m = r.Match(text);
while (m.Success) 
{
   //do things with your matching text 
   m = m.NextMatch();
}
Run Code Online (Sandbox Code Playgroud)

  • +1:虽然您忘记在字符串前添加@符号. (2认同)

Chu*_*nce 16

微软有一些很好的正则表达式页面...这就是他们所说的(效果还不错)

^(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&amp;%\$#_]*)?$
Run Code Online (Sandbox Code Playgroud)

http://msdn.microsoft.com/en-us/library/ff650303.aspx#paght000001_commonregularexpressions

  • 那个不包括url后面的查询字符串.它停在第一个'='字母.要修复,只需添加单个字符'=',使其结束如此"....&amp;%\ $#_ =]*)?$".此外,该正则表达式模式将不会在字符串中找到url.它只会告诉你字符串是否为url.要找到它,请在开头省略"^",在结尾省略"$".然后,Regex.Matches(text,pattern)应返回文本中的所有URL. (5认同)

Dan*_*Dan 5

我不确定你究竟在问什么,但是一个好的开始就是Uri课程,它将为你解析网址.


Dav*_*vid 5

这是为URL定义的.

^http(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&amp;%\$#_]*)?$
Run Code Online (Sandbox Code Playgroud)

http://msdn.microsoft.com/en-us/library/ms998267.aspx