正则表达式删除链接[重复]

Posted

技术标签:

【中文标题】正则表达式删除链接[重复]【英文标题】: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>

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

【问题讨论】:

【参考方案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 意味着. 也匹配换行符。

【讨论】:

以上是关于正则表达式删除链接[重复]的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式 - 删除标签 [重复]

删除正则表达式中的 Html 标签 [重复]

删除 Div 标签的正则表达式 [重复]

替代正则表达式以解析链接的 HTML 页面 [重复]

删除python注释的正则表达式[重复]

用于支持默认链接和带数字符号 (#) 的链接的正则表达式 [重复]