例子:  已知字符串 str1  是一个网址   如 www.icbc.com.cn   ||  www.baidu.com ||  www.sina.cn  || www.csdn.net
            
         字符串str2 如何获取 网址中的 主域名,如   icbc    baidu     siana   csdn         求代码

解决方案 »

  1.   

    比较笨的方法:
      1、先分离字符串 ,分离符号“||”
      2、再继续分离,分离符号“.”
      3.移除“www”、“com”、“cn”等 
      4 剩下的就是你所要的了
      

  2.   

                string[] list = "www.icbc.com.cn || www.baidu.com || www.sina.cn || www.csdn.net".Split(new string[] { "||" }, StringSplitOptions.RemoveEmptyEntries);
                Regex regex = new Regex(@"(www|)\.(.*?)\.(com|cn|net)(.*?)");
                foreach (string s in list)
                {
                    Match m=regex.Match(s);
                    if (m.Groups.Count>0)
                    { 
                        Console.WriteLine(m.Groups[2].Value);
                    }
                }            Console.Read();
      

  3.   


                string source = @"www.icbc.com.cn || www.baidu.com || www.sina.cn || www.csdn.net";
                Regex reg = new Regex(@"www.(?<name>\w*\W*).(com|cn|net)");
                Match mm = reg.Match(source);
                MatchCollection mc = reg.Matches(source);
                foreach (Match m in mc)
                {
                    MessageBox.Show(m.Groups["name"].Value);
                }
      

  4.   


     string sourcestr = @"www.icbc.com.cn || www.baidu.com || www.sina.cn || www.csdn.net";
                Regex regx = new Regex(@"www\.(\w*\W*)\.(com.cn|com|cn|net)");
                List<string> urllist = new List<string>();
                MatchCollection mcurl = regx.Matches(sourcestr);
                foreach (Match sk in mcurl)
                {
                    urllist.Add(sk.Groups[1].Value);//urllist中icbc,baidu,sina,csdn
                }
      

  5.   


            string strTest = "www.icbc.com.cn || www.baidu.com || www.sina.cn || www.csdn.net";
            StringBuilder strResult = new StringBuilder();
            MatchCollection matches = Regex.Matches(strTest, @"(?<=[wW]{3}\.)[^\.]+(?=.(com|cn|net))");
            System.Collections.Generic.List<string> strResults = 
                new System.Collections.Generic.List<string>();
            foreach (Match match in matches)
            {
                // 这里为啥不直接用.Value?
                strResults.Add(match.Value);
            }
      

  6.   

    我明白了 ,谢谢各位的帮助!......不过我正则有点尴尬 ,再问一下,假如说匹配   tpiic.csdn.net   mail.163.com  或者 .com后边还有一大串内容,正则要怎么写?
      

  7.   

    看4楼的,不管你有多少这种网址,结果就在urllist中string sourcestr = @"(?is)www.icbc.com.cn || www.baidu.com || www.sina.cn || www.csdn.net";
                Regex regx = new Regex(@"www\.(\w*\W*)\.(com.cn|com|cn|net)");
                List<string> urllist = new List<string>();
                MatchCollection mcurl = regx.Matches(sourcestr);
                foreach (Match sk in mcurl)
                {
                    urllist.Add(sk.Groups[1].Value);//urllist中icbc,baidu,sina,csdn
                }
      

  8.   

    针对你当前提问的数据
    只需把list添加那句改成 urllist.Add(sk.Groups[0].Value);//改成0就可以了
    当然你要匹配更完整的可以用http(s)?://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?