【问题标题】:Regular expression for remove html links [duplicate]用于删除 html 链接的正则表达式 [重复]
【发布时间】:2011-11-23 20:03:58
【问题描述】:

可能重复:
Regular expression for parsing links from a webpage?
RegEx match open tags except XHTML self-contained tags

我需要一个正则表达式来去除 html <a> 标签,这里是示例:

<a href="xxxx" class="yyy" title="zzz" ...> link </a>

应该转换成

 link

【问题讨论】:

  • 你“需要”一个正则表达式吗?
  • @josh3736 我会大饱口福你独角兽的血。
  • 用什么语言? HTML 没有正则表达式。

标签: html regex


【解决方案1】:

我想你正在寻找:&lt;/?a(|\s+[^&gt;]+)&gt;

【讨论】:

  • 你什么时候见过一个标签?
  • 我对其进行了编辑以解决此类奇怪的情况。
  • 不匹配 &lt; a&gt;&lt; /a&gt;
【解决方案2】:

上面给出的答案将匹配有效的 html 标签,例如 &lt;abbr&gt;&lt;address&gt;&lt;applet&gt; 并错误地将它们删除。一个更好的只匹配锚标签的正则表达式是

</?a(?:(?= )[^>]*)?>

【讨论】:

  • 我已经将这个与 sublime text 3 的免费版一起使用。在我的情况下效果最好。
【解决方案3】:

这是我会使用的:

&lt;/?a\b[^&gt;]*&gt;

【讨论】:

    【解决方案4】:

    您将不得不反复使用这种骇人听闻的解决方案,而且它甚至可能无法完美地处理复杂的 HTML:

    <a(\s[^>]*)?>.*?(</a>)?
    

    或者,您可以尝试其中一种现有的 HTML 清理器/解析器


    HTML 不是常规语言;我们为您提供的任何正则表达式不会是“正确的”。 这是不可能的。 即使是 Jon Skeet 和 Chuck Norris 也做不到。在我大发雷霆之前,就像@bobince [in]著名的曾经做过的那样,我只想说:

    使用 HTML 解析器。

    (不管他们叫什么。)


    编辑:

    如果您想“错误地”删除没有任何&lt;a&gt;s 的&lt;/a&gt;s,请执行以下操作:

    </?[a\s]*[^>]*>
    

    【讨论】:

    • 您的正则表达式:&lt;a(\s[^&gt;]*)?&gt;(&lt;/a&gt;)? 与结束标签 &lt;/a&gt; 不匹配(A 元素为空的情况除外)。
    • @ridgerunner 因为正则表达式没有内存,所以在两者之间放置一个.*? 是我能做的最好的。它将分解为更复杂的 HTML。
    • 只是好奇:你为什么要担心标签的文字?
    • @BillCriswell 哦,该死的,我刚刚意识到 OP 可能不需要一个“正则表达式”,它不会去除不匹配的 &lt;/a&gt;s。 (那是不正确的,但我认为 OP 不会在意。:))
    【解决方案5】:

    &lt;/?a.*?&gt; 可以。将其替换为''

    【讨论】:

    • 我只是做了一些适合我的改变。感谢帮助。 // ,编辑你的答案。
    • 是的,当然,我只是给了 RE。例如,如果您使用 javascript,则必须附加 / 前缀/后缀。如果您使用的是 C# 正则表达式库,则无需添加任何内容。
    • 但是有一点小问题。 </a> 没有条纹。
    • 您使用的是 POSIX 还是 PCRE?即ereg_replacepreg_replace
    • 仅供参考:这也匹配
      等元素。
    猜你喜欢
    • 1970-01-01
    • 2010-10-23
    • 2010-10-23
    • 2012-02-24
    • 2016-09-04
    • 1970-01-01
    • 2017-03-03
    • 1970-01-01
    相关资源
    最近更新 更多