我需要一个正则表达式匹配以下格式:
http://g.live.com/<LinkFile>/<LinkID> (基本格式)例如:
http://g.live.com/8SE.en-us.14.0/JewelMenu1
http://g.msn.com/5meen_us/122
http://g.live.com/1rew3set/en_error?!draug_eciohc
http://g.live.com/1rew3set/en_ceip
http://g.live.com/1rew3set/en_toolbar现在我有一正则表达式:(?:(?:(?:http|ftp|gopher|telnet|news)://)(?:w{3}\.)?(?:[a-zA-Z0-9/;\?&=:\-_\$\+!\*'\(\|\\~\[\]#%\.])+)能够匹配这些,但是也可以匹配形如:
http://g.live.com/1rew3set/en_ceip.aspx
http://g.live.com/1rew3set/en_toolbar.html我不需要它匹配到这样的,简单来说,就是求一正则表达式,匹配URL但是最后跟的不是.aspx或者.html等内容在线等
http://g.live.com/<LinkFile>/<LinkID> (基本格式)例如:
http://g.live.com/8SE.en-us.14.0/JewelMenu1
http://g.msn.com/5meen_us/122
http://g.live.com/1rew3set/en_error?!draug_eciohc
http://g.live.com/1rew3set/en_ceip
http://g.live.com/1rew3set/en_toolbar现在我有一正则表达式:(?:(?:(?:http|ftp|gopher|telnet|news)://)(?:w{3}\.)?(?:[a-zA-Z0-9/;\?&=:\-_\$\+!\*'\(\|\\~\[\]#%\.])+)能够匹配这些,但是也可以匹配形如:
http://g.live.com/1rew3set/en_ceip.aspx
http://g.live.com/1rew3set/en_toolbar.html我不需要它匹配到这样的,简单来说,就是求一正则表达式,匹配URL但是最后跟的不是.aspx或者.html等内容在线等
http://g.live.com/8SE.en-us.14.0/JewelMenu1
http://g.msn.com/5meen_us/122
http://g.live.com/1rew3set/en_error?!draug_eciohc
http://g.live.com/1rew3set/en_ceip
http://g.live.com/1rew3set/en_toolbar但是不匹配:
http://g.live.com/8SE.en-us.14.0/JewelMenu1.aspx
http://g.msn.com/5meen_us/122.htm
http://g.live.com/1rew3set/en_error?!draug_eciohc.xml
http://g.live.com/1rew3set/en_ceip.html
http://g.live.com/1rew3set/en_toolbar.aspx
(?!.*\.(aspx?|html?|xml)$)
@"(?in)^(?!.*\.[a-z]+$)(http|ftp|gopher|telnet|news)://(www\.)?([-a-z0-9/;?&=:_$+!*'(|\\~\[\]#%.])+$"
using System.Text.RegularExpressions;class Program
{
static void Main()
{
string[] array =
{
// 要求匹配:
"http://g.live.com/8SE.en-us.14.0/JewelMenu1",
"http://g.msn.com/5meen_us/122",
"http://g.live.com/1rew3set/en_error?!draug_eciohc",
"http://g.live.com/1rew3set/en_ceip",
"http://g.live.com/1rew3set/en_toolbar",// 但是不匹配:
"http://g.live.com/8SE.en-us.14.0/JewelMenu1.aspx",
"http://g.msn.com/5meen_us/122.htm",
"http://g.live.com/1rew3set/en_error?!draug_eciohc.xml",
"http://g.live.com/1rew3set/en_ceip.html",
"http://g.live.com/1rew3set/en_toolbar.aspx",
};
string patt = @"(?in)^(?!.*\.[a-z]+$)(http|ftp|gopher|telnet|news)://(www\.)?([-a-z0-9/;?&=:_$+!*'(|\\~\[\]#%.])+$";
foreach (string s in array)
{
if (Regex.IsMatch(s, patt)) Console.WriteLine(s);
}
}
}
/* 程序输出:
http://g.live.com/8SE.en-us.14.0/JewelMenu1
http://g.msn.com/5meen_us/122
http://g.live.com/1rew3set/en_error?!draug_eciohc
http://g.live.com/1rew3set/en_ceip
http://g.live.com/1rew3set/en_toolbar
*/