用于过滤div类内容的正则表达式

时间:2014-02-19 11:48:42

标签: c# regex asp.net-mvc

<div class="socialMedia">
    <div id="divLinkedin" style="width:100px;height:0px;">
        <script src="//platform.linkedin.com/in.js" type="text/javascript"></script>
        <script data-counter="right" type="IN/Share"></script>
        <!-- Facebook share button Start -->
    </div>
    <div id="divFb" style="float: left;margin-left:100px;">
        <a expr:share_url="data:post.url" href="http://www.facebook.com/sharer.php" name="fb_share" type="button_count">Share</a>
        <script src="http://static.ak.fbcdn.net/connect.php/js/FB.Share" type="text/javascript"></script>
        <!-- Facebook share button End -->
   </div>
   <div id ="divTw" style="float: left;margin-left:10px;">
       <a class="twitter-share-button" data-lang="en" href="https://twitter.com/share">Tweet</a>
      <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="https://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
   </div>
   <br />
   <br />
</div>

我需要找到正则表达式来过滤div元素中的内容class ='socialMedia'。里面的所有内容必须是空字符串?我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

您无法以可靠的方式使用RegEx解析HTML,正确检测结束标记是一个主要问题this is a good SO post explaining why not to use regex“正则表达式是一种不太复杂的工具,无法理解HTML所使用的结构.HTML不是一种常规语言,因此无法通过正则表达式进行解析。“

改为使用HTML Agility Pack

e.g。

HtmlDocument htmlDocument = new HtmlDocument();

htmlDocument.LoadHtml("http://www.YOURURL.com");

foreach (HtmlNode selectNode in htmlDocument.DocumentNode.SelectNodes("//div[@class='socialMedia']"))
{
    string divContents = selectNode.InnerText;
    // Do Stuff
}