【问题标题】:C# RegEx - find html tags (div and anchor)C# RegEx - 查找 html 标签(div 和锚点)
【发布时间】:2011-02-04 20:02:09
【问题描述】:

我必须检索几个 div 部分(特定类名“row”)及其内容,并另外找到所有锚标签(链接 url)(类“下划线红色粗体”)。 简短地说:获取以下部分:

<div class = "row ">
 ... (divs, tags ...)
<a class="underline red bold" href="/searchClickThru?pid=prod56534895&amp;q=&amp;rpos=109181&amp;rpp=10&amp;_dyncharset=UTF-8&amp;sort=&amp;url=/culture-and-gender-intimate-relation-ksiazka,prod56534895,p">

和 url集合

string[] urls = {"/searchClickThru?pid=prod56534895&amp;q=&amp;rpos=109181&amp;rpp=10&amp;_dyncharset=UTF-8&amp;sort=&amp;url=/culture-and-gender-intimate-relation-ksiazka,prod56534895,p"}

整个页面是这样的:

<html>

...很多东西

<div class="row ">

  <div class="photo">
    <a rel="nofollow" href="/searchClickThru?pid=prod56534895&amp;q=&amp;rpos=109181&amp;rpp=10&amp;_dyncharset=UTF-8&amp;sort=&amp;url=/culture-and-gender-intimate-relation-ksiazka,prod56534895,p">
      <img alt="alt msg" src="/b/s/b9/03/b9038292d147a582add07ee1f0607827.jpg">                 
 </a>
  </div>

  <div class="desc">
    <div class="l1">
      <div class="icons">
      </div>

      <table cellspacing="0" cellpadding="0" border="0">
        <tbody>
          <tr>
            <td>
              <div class="fleft">
                <a class="underline red bold" href="/searchClickThru?pid=prod56534895&amp;q=&amp;rpos=109181&amp;rpp=10&amp;_dyncharset=UTF-8&amp;sort=&amp;url=/culture-and-gender-intimate-relation-ksiazka,prod56534895,p">
                  Culture And Gender   <br>Intimate Relation</a>
              </div>

              <div class="fleft">

              </div>
            </td>
          </tr>
        </tbody>
      </table>
    </div>
    <div class="l2">

      <div>
      </div>
      <div>
        <div class="but">
        </div>
      </div>
    </div>
    <div class="l3">
      Long description
      <a class="underlinepix_red no_wrap" rel="nofollow" href="/searchClickThru?pid=prod56534895&amp;q=&amp;rpos=109181&amp;rpp=10&amp;_dyncharset=UTF-8&amp;sort=&amp;url=/culture-and-gender-intimate-relation-ksiazka,prod56534895,p">
        more<img alt="" src="/b/img/arr_red_sm.gif">
  </a>
    </div>
  </div>
</div>

<div class="omit"></div>

<div class="row ">

  <div class="photo">
    <a rel="nofollow" href="/searchClickThru?pid=prod56534895&amp;q=&amp;rpos=109181&amp;rpp=10&amp;_dyncharset=UTF-8&amp;sort=&amp;url=/culture-and-gender-intimate-relation-ksiazka,prod56534899,p">
      <img alt="alt msg" src="/b/s/b9/03/b9038292d147a582add07ee1f06078222.jpg">                    
 </a>
  </div>

  <div class="desc">
    <div class="l1">
      <div class="icons">
      </div>

      <table cellspacing="0" cellpadding="0" border="0">
        <tbody>
          <tr>
            <td>
              <div class="fleft">
                <a class="underline red bold" href="/searchClickThru?pid=prod56534895&amp;q=&amp;rpos=109181&amp;rpp=10&amp;_dyncharset=UTF-8&amp;sort=&amp;url=/culture-and-gender-intimate-relation-ksiazka,prod5653489225,p">
                  Culture And Gender   <br>Intimate Relation</a>
              </div>

              <div class="fleft">

              </div>
            </td>
          </tr>
        </tbody>
      </table>
    </div>
    <div class="l2">

      <div>
      </div>
      <div>
        <div class="but">
        </div>
      </div>
    </div>
    <div class="l3">
      Long description
      <a class="underlinepix_red no_wrap" rel="nofollow" href="/searchClickThru?pid=prod56534895&amp;q=&amp;rpos=109181&amp;rpp=10&amp;_dyncharset=UTF-8&amp;sort=&amp;url=/culture-and-gender-intimate-relation-ksiazka,prod56534895,p">
        more<img alt="" src="/b/img/arr_red_sm.gif">
  </a>
    </div>
  </div>
</div>

有人可以帮我创建合适的 reg ex 吗?

【问题讨论】:

标签: c# html regex find tags


【解决方案1】:

正则表达式不太适合这种情况。

由于 HTML 的嵌套性质,执行您所要求的正则表达式将非常(非常非常)长且复杂。请改用 HTML 解析器。

【讨论】:

【解决方案2】:

这个问题的答案和这个问题的答案大致相同:

RegEx match open tags except XHTML self-contained tags

【讨论】:

    【解决方案3】:

    查看HTML Agility Pack

    这是一个敏捷的 HTML 解析器, 构建一个读/写 DOM 并支持 普通的 XPATH 或 XSLT(你实际上 不必了解 XPATH 也不必 XSLT 使用它,不用担心...)。它是 一个 .NET 代码库,可让您 解析“网络之外”的 HTML 文件。这 解析器对“真实的 世界”格式错误的 HTML。对象 模型与提议的非常相似 System.Xml,但用于 HTML 文档(或 流)。

    【讨论】:

      【解决方案4】:

      是否必须使用正则表达式?如果不是,那你为什么不使用像Html Agility Pack 这样的 HTML 解析器...如果你使用解析器而不是正则表达式,那么得到你想要的东西会容易得多。

      【讨论】:

        【解决方案5】:

        或者,如果您已成功进入 LINQ 并喜欢 LINQ 的强大功能,则似乎有一个 LINQ-to-HTML Library 可供下载。我还没试过,所以我不能说它的能力。

        【讨论】:

          猜你喜欢
          • 2011-05-09
          • 1970-01-01
          • 2023-03-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多