我要取得一段文字中有域名的最后一个域,即
"文字文字www.csdn.net文字文字" 取得 .net
"文字文字ad.us/user文字文字" 我要取得 .us (ad.us是个跳转域名)但不能取得 "文字文字as.ed文字文字" 中的.ed 因为一个.可以会取错,不是网址的也取了,比如 Mr.Xie,可能会误取到.Xie 就是文字中有2个"." 或者一个"."的必须有"/"符号的网址,取得这个网址的最大域. string re = re = @"(?:\.\w+(\.\w{2,3})(?:[^\w\.]|$))|\w+(\.\w{2,3})\\(?:\w)";//这个怎么写
Match hrefMatch = Regex.Match(text_str, re, RegexOptions.IgnoreCase | RegexOptions.Multiline);
string domain = hrefMatch.Groups[1].Value;
"文字文字www.csdn.net文字文字" 取得 .net
"文字文字ad.us/user文字文字" 我要取得 .us (ad.us是个跳转域名)但不能取得 "文字文字as.ed文字文字" 中的.ed 因为一个.可以会取错,不是网址的也取了,比如 Mr.Xie,可能会误取到.Xie 就是文字中有2个"." 或者一个"."的必须有"/"符号的网址,取得这个网址的最大域. string re = re = @"(?:\.\w+(\.\w{2,3})(?:[^\w\.]|$))|\w+(\.\w{2,3})\\(?:\w)";//这个怎么写
Match hrefMatch = Regex.Match(text_str, re, RegexOptions.IgnoreCase | RegexOptions.Multiline);
string domain = hrefMatch.Groups[1].Value;
Match m = Regex.Match("文字文字www.csdn.net文字文字文字文字ad.us/user文字文字文字文字as.ed文字文字", @"(?([^.]+\.[^.]+\.[^.]+)(?<=[a-z0-9]+\.[\w-]+\.)[a-z0-9-]+|(?<=\.)[^/]+(?=/))");
while (m.Success)
{
Console.WriteLine(m.Value);
m = m.NextMatch();
}
/*
输出 net us
*/
修正一下,网址可以有数字的~~
?<domain>这个匹配什么呀?没看懂c#自己的正册表达式?以前没看到过
"文字文字www.csdn.net文字文字文字文字ad.us/user.asp文字文字文字文字as.ed文字文字"
加了个user.asp
就只能输出 net 了