<div id="companyname"> 
<ul>
<li class="china">
<span id="chinaname" class="chinaname vas_childvisible">武汉威哥变频技术服务公司</span>
<span id="enname" class="enname vas_childvisible"></span>
</li>
</ul>
</div>怎么用正则表达式 提取中间的 公司名啊?请大家出谋划策啊~~先谢过了!!

解决方案 »

  1.   


    (?<=<span id=\"chinaname\" class=\"chinaname vas_childvisible\">).*?(?=</span>)
      

  2.   

    (?s)(?<=<span id="chinaname".*?>)\w+(?=</span>)
      

  3.   

    如果你是BS程序的话,貌似只能正则了。如果CS的话。用WebBrowse控件装载。然后这样获取Dom架构:
    HtmlDocument doc = WebBrowse.Document;之后用着就很方便了。for(int i=0; i<doc.all.count; i++)
    {
      if(doc.all[i].tagName == "SPAN" &&
         doc.all[i].id == "chinaname")
      {
         string company = doc.all[i].innerHtml;
         //或者
         string company = doc.all[i].GetAttribs("value"); //方法名可能没写对。自己查Msdn。反正是Get开头。
      }
    }满意的话。给分哈。不满意,再继续回帖补字节。
      

  4.   


                string str = @"<span id=""chinaname"" class=""chinaname vas_childvisible"">武汉威哥变频技术服务公司</span>";
                string pattern = @"(?<=<span id=""chinaname[^>]*>).*(?=</span>)";
                Console.WriteLine(pattern);
                Regex regex = new Regex(pattern);
                Console.WriteLine(regex.Match(str).Value);
                /*
                 * 武汉威哥变频技术服务公司
                 * */
      

  5.   

                string str = "<div id=\"companyname\">"
    + "<ul>"
    + "<li class=\"china\">"
    + "<span id=\"chinaname\" class=\"chinaname vas_childvisible\">武汉威哥变频技术服务公司</span>"
    + "<span id=\"enname\" class=\"enname vas_childvisible\"></span>"
    + "</li>"
    + "</ul>"
    + "</div>";
                Regex reg = new Regex(@"(?is)<span[^>]*?id=(['""\s]?)chinaname\1[^>]*?>((?:(?!</?span).)*)");
                foreach (Match m in reg.Matches(str))
                    Response.Write(m.Groups[2].Value + "<br/>");
    //武汉威哥变频技术服务公司