从字符串中获取url

时间:2011-02-24 15:11:03

标签: c# .net regex string windows-phone-7

  

可能重复:
  Get a URL from a String

嗨,我试图使用regexp从字符串中提取url。字符串是这样的: “lorem ipsum baby www.test.com lorem”,“lorem ipsum http://www.test.com foo bar”或“lorem www.test.com”,没有尾随空格。
使用
MatchCollection ms = Regex.Matches(adress, @"(www.+|http.+)([\s]|$)");
返回整个字符串。任何regexp-guru能帮助我解决这个问题吗?

编辑:
解决这个问题:
MatchCollection mc = Regex.Matches(adress, @"(www[^ \s]+|http[^ \s]+)([\s]|$)", RegexOptions.IgnoreCase);
adress = mc[0].Value;
WebBrowserTask task = new WebBrowserTask();
task.URL = adress;
task.Show();

谢谢大家的帮助! :)

3 个答案:

答案 0 :(得分:6)

我认为我们在这里显而易见的是,这段代码确实没有任何问题。

也许OP没有正确调用match.value。

string adress = "hello www.google.ca";
// Size the control to fill the form with a margin
MatchCollection ms = Regex.Matches(adress, @"(www.+|http.+)([\s]|$)");
string testMatch = ms[0].Value.ToString();

testMatch仅包含“www.google.ca”

这不是你的意图吗?

答案 1 :(得分:3)

尝试这样的事情:

string txt = "lorem ipsum baby http:\\\\www.google.com\/";
Regex regx = new Regex("http://([\\w+?\\.\\w+])+([a-zA-Z0-9\\~\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)_\\-\\=\\+\\\\\\/\\?\\.\\:\\;\\'\\,]*)?", 
RegexOptions.IgnoreCase);
MatchCollection ms = regx.Matches(txt);

答案 2 :(得分:0)

我认为问题在于“。”标识符匹配任何内容,包括那些要结束捕获的尾随空格。如果你将“。+”更改为“[^] +”,或者通过在左括号内放一个“?:”来首先捕获“nongreedy”,你应该得到你想要的答案。