我要取得一段文字中有域名的最后一个域,即 
"文字文字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;

解决方案 »

  1.   

    (\.(?<domain>[a-z]+)/)|((\.[a-z]+)+(?<domain>\.[a-z]+))
      

  2.   


                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
    */
      

  3.   

    (\.(?<domain>[a-z0-9]+)/)|((\.[a-z]+)+(?<domain>\.[a-z0-9]+))
    修正一下,网址可以有数字的~~
      

  4.   

    行.
    ?<domain>这个匹配什么呀?没看懂c#自己的正册表达式?以前没看到过
      

  5.   

    ? <domain>表示分组名称,你取的时候可以用.Group["domain"].value来取值,其实也可以不加的,不过你就要用分组序号来取了,这里是为了方便取值。
      

  6.   


    "文字文字www.csdn.net文字文字文字文字ad.us/user.asp文字文字文字文字as.ed文字文字"
    加了个user.asp
    就只能输出 net 了