正则表达式删除链接[重复]
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
意味着.
也匹配换行符。
【讨论】:
以上是关于正则表达式删除链接[重复]的主要内容,如果未能解决你的问题,请参考以下文章