【问题标题】:Regex HTML help正则表达式 HTML 帮助
【发布时间】:2011-04-04 12:20:33
【问题描述】:

大家好,我需要一些帮助来找出RegEx 用于在 HTML 标记的标签中查找值的公式,如下所示:

<span class=""releaseYear"">1993</span>
<span class=""mpaa"">R</span>
<span class=""average-rating"">2.8</span>
<span class=""rt-fresh-small rt-fresh"" title=""Rotten Tomatoes score"">94%</span> 

我只需要上面那个 HTML 中的 1993R2.894%

任何帮助都会很棒,因为在形成这些东西之一时我没有太多知识。

【问题讨论】:

标签: regex vb.net


【解决方案1】:

不要使用正则表达式来解析 HTML。使用 HTML 解析器。有一个不错的here

【讨论】:

    【解决方案2】:

    如果您已经在字符串中包含 HTML:

    string html = @"
    <span class=""releaseYear"">1993</span>
    <span class=""mpaa"">R</span>
    <span class=""average-rating"">2.8</span>
    <span class=""rt-fresh-small rt-fresh"" title=""Rotten Tomatoes score"">94%</span>
    ";
    

    或者您可以直接从 Internet 加载页面(省去 5 行流和请求):

    HtmlWeb web = new HtmlWeb();
    HtmlDocument doc = web.Load("http://www.rottentomatoes.com/m/source_code/");
    

    使用 HTML 敏捷包:

    HtmlDocument doc = new HtmlDocument();
    doc.LoadHtml(html);
    HtmlNodeCollection spans = doc.DocumentNode.SelectNodes("//span");
    

    现在您可以遍历它们,或者简单地获取每个节点的文本:

    IEnumerable<string> texts = spans.Select(option => option.InnerText).ToList();
    

    或者,您可以搜索您所追求的节点:

    HtmlNode nodeReleaseYear = doc.DocumentNode
                                  .SelectSingleNode("//span[@class='releaseYear']");
    string year = nodeReleaseYear.InnerText;
    

    【讨论】:

    • 代码是C#,但应该很容易转换成VB.Net。
    • 我如何让它工作?我放了 HtmlDocument doc = new HtmlDocument() 但它有下划线说 HtmlDocument' 是一种类型,不能用作表达式 并且 Name 'doc' 是未声明。
    • @StealthRT,您是否在项目中添加了对 HtmlAgilityPack 的引用?
    • @tster。是的,我有 Imports HtmlAgilityPack
    • @StealthRT - 我不确定 VB 脚本应该是什么样子。我会 Dim doc as new HtmlDocument 。也许这会有所帮助:stackoverflow.com/questions/516811/…
    猜你喜欢
    • 2011-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多