俺想把某个网页中的所有url和email都找出来,想到的方法是先得到网页的源程序,然后用正则表达式去匹配,但是在网上找了好多正则表达式,实际使用中都有些问题:现在正在使用的url正则表达式:"(https?|ftp|file)://[-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|]";
但是实际使用中,比方http://www.baidu.com/s?bs=%BA%AB%D1%A9&f=8&wd=%BA%AB%D1%A9+%C6%AF%C1%C1这个网页中少找了好多url正在使用的email正则表达式:"\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*";
实际使用中发现这个表达式不能排除中文的文字,比方说用这个表达式找出了带中文的邮箱"有问题交流[email protected]
",如何改才能把"有问题交流"这几个字给去了??
但是实际使用中,比方http://www.baidu.com/s?bs=%BA%AB%D1%A9&f=8&wd=%BA%AB%D1%A9+%C6%AF%C1%C1这个网页中少找了好多url正在使用的email正则表达式:"\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*";
实际使用中发现这个表达式不能排除中文的文字,比方说用这个表达式找出了带中文的邮箱"有问题交流[email protected]
",如何改才能把"有问题交流"这几个字给去了??
Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>.*?)</a>");
MatchCollection mc = reg.Matches(yourStr);
foreach (Match m in mc)
{
richTextBox2.Text += m.Groups["url"].Value + "\n"; //链接
//richTextBox2.Text += m.Groups["text"].Value + "\n"; //文本
}email的正则,由于.NET中\w可以匹配中文,所以要加一个RegexOptions.ECMAScript参数
Regex reg = new Regex("\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*", RegexOptions.ECMAScript);