可能重复:
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();
谢谢大家的帮助! :)
答案 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”,你应该得到你想要的答案。