【发布时间】:2010-10-23 16:25:30
【问题描述】:
我有一个 HTML 页面
<a class="development" href="[variable content]">X</a>
每个地方的【变量内容】都不一样,其余的都一样。
什么正则表达式会捕获所有这些链接?
(虽然这里不写,但我确实试过了……)
【问题讨论】:
我有一个 HTML 页面
<a class="development" href="[variable content]">X</a>
每个地方的【变量内容】都不一样,其余的都一样。
什么正则表达式会捕获所有这些链接?
(虽然这里不写,但我确实试过了……)
【问题讨论】:
非贪心版呢:
<a class="development" href="(.*?)">X</a>
【讨论】:
试试这个正则表达式:
<a class="development" href="[^"]*">X</a>
【讨论】:
正则表达式根本不擅长解析 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?。
【讨论】:
对于 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", "#");
【讨论】:
这是一个允许将各种邪恶放入href 属性的版本。
/<a class="development" href=(?:"[^"]*"|'[^']*'|[^\s<>]+)>.*?<\/a>/m
我还假设X 将是可变的,所以我在那里添加了一个非贪婪匹配来处理它,而/m 意味着. 也匹配换行符。
【讨论】: