【问题标题】:regular expression to remove links [duplicate]删除链接的正则表达式[重复]
【发布时间】:2010-10-23 16:25:30
【问题描述】:

可能重复:
RegEx match open tags except XHTML self-contained tags

我有一个 HTML 页面

<a class="development" href="[variable content]">X</a>

每个地方的【变量内容】都不一样,其余的都一样。
什么正则表达式会捕获所有这些链接? (虽然这里不写,但我确实试过了……)

【问题讨论】:

    标签: html regex


    【解决方案1】:

    非贪心版呢:

    <a class="development" href="(.*?)">X</a>
    

    【讨论】:

    • 您正在执行可能不会被使用的捕获。除此之外,我认为使用此版本或 Gumbo 版本没有太大区别。
    【解决方案2】:

    试试这个正则表达式:

    <a class="development" href="[^"]*">X</a>
    

    【讨论】:

    • 单引号属性也是有效的 html。而且,根据来源,您甚至可能拥有无效的 html,到那时您就完蛋了。
    【解决方案3】:

    正则表达式根本不擅长解析 HTML(请参阅 Can you provide some examples of why it is hard to parse XML and HTML with a regex? 了解原因)。您需要的是一个 HTML 解析器。有关使用各种解析器的示例,请参阅 Can you provide an example of parsing HTML with your favorite parser?

    【讨论】:

      【解决方案4】:

      对于 HTML 解析来说,正则表达式通常是一个糟糕的解决方案,每次提出这样的问题时都会讨论这个话题。例如,元素可以换行到另一行,或者是

      <a class="development" 
        href="[variable content]">X</a>
      

      <a class="development" href="[variable content]">X
      </a>
      

      你想达到什么目的?

      使用 JQuery 你可以禁用链接:

      $("a.development").onclick = function() { return false; }
      

      $("a.development").attr("href", "#");
      

      【讨论】:

      • 此解决方案假定 Itay Moav 正在使用 jquery 库,并且它是他希望实现的客户端解析
      • @vrish88:正确。因此,问题“你想达到什么目的?”和评论“使用 JQuery 你可以......”
      【解决方案5】:

      这是一个允许将各种邪恶放入href 属性的版本。

      /<a class="development" href=(?:"[^"]*"|'[^']*'|[^\s<>]+)>.*?<\/a>/m
      

      我还假设X 将是可变的,所以我在那里添加了一个非贪婪匹配来处理它,而/m 意味着. 也匹配换行符。

      【讨论】:

        猜你喜欢
        • 2010-10-23
        • 2011-11-23
        • 2017-03-03
        • 2010-10-31
        • 2013-01-08
        • 1970-01-01
        • 2013-01-07
        相关资源
        最近更新 更多