string re = @"\.\w+(\.\w{2,3})(?:[^\w\.]|$)";
匹配  "在www.csdn.net上"     取得 .net
不匹配  "在ad.us/user上"     我要取得 .us但不能匹配 as.ed
 
这么做可以匹配 有2个"." 或者一个"."的必须有"/"符号啊? 

解决方案 »

  1.   

    我改成这样,不过台长了
    re = @"(?:\.[A-Za-z0-9-]+(\.[A-Za-z]{2,3})(?:[^A-Za-z0-9-\.]|$))|[A-Za-z0-9-]+(\.[A-Za-z]{2,3})\\(?:[A-Za-z0-9-])";
    能不能简化一点.
    而且我哪个长的,取值麻烦
    Match hrefMatch = Regex.Match(text_str, re, RegexOptions.IgnoreCase | RegexOptions.Multiline);
    string domain = hrefMatch.Groups[1].Value;//这里一会要Groups[1].一会要Groups[2].还要判断一下哪个有值.
      

  2.   

    try...
     static void Main(string[] args)
            {            
               Regex re=new Regex(@".\w+(\.\w{0,1,2,3})?(?:[^\/\\w\.]|$)");
                string yourStr = "ad.us/user";
                if(re.Match(yourStr).Success)
                    Console.WriteLine(re.Match(yourStr));
            }        
      

  3.   

    就是这个意思,我要取得一段文字中有域名的最后一个域,即
    "文字文字www.csdn.net文字文字"    取得 .net 
    "文字文字ad.us/user文字文字"    我要取得 .us 但不能取得 "文字文字as.ed文字文字" 中的.ed  因为一个.可以会取错,不是网址的也取了,比如 Mr.Xie,可能会误取到.Xie就是文字中有2个"." 或者一个"."的必须有"/"符号的网址,取得这个网址的最大域. 
      

  4.   

    这个应该是效率最高的了吧。
    [code=C#]
                string re = @"(?i)(?:http://)?[^/]+";
                string[] tmp = Regex.Match("http://topic.csdn.net/u/20090717/09/87a4e605-c72c-4ec4-a177-0df969e6f10f.html?30756", re).Value.Split('.');
                MessageBox.Show("."+tmp[tmp.Length-1]);code]
      

  5.   

    晕,排版错乱,重发:
                string re = @"(?i)(?:http://)?[^/]+";
                string[] tmp = Regex.Match("http://topic.csdn.net/u/20090717/09/87a4e605-c72c-4ec4-a177-0df969e6f10f.html?30756", re).Value.Split('.');
                MessageBox.Show("."+tmp[tmp.Length-1]);