0

如何防止链接搜索跨标签溢出?

我有一个本地网站,其页面包含各种类的超链接,并且想知道如何防止搜索结果溢出多个标签。(我需要对特定链接类型的地址进行批量修改。)

例如,我的页面可能包含链接列表,例如

Best solution:<br>
<a href="aaa.html" class="xxx">AAA</a><br> but see also
<a href="bbb.html" class="yyy">BBB</a><br> and
<a href="ccc.html" class="zzz">CCC</a><br>.

现在,当我尝试使用正则表达式搜索词在网站上仅搜索“zzz”类的链接时

<a href="+[].html" class="zzz">

我的结果包括长字符串,例如

<a href="aaa.html" class="xxx">AAA</a><br> but see also <a href="bbb.html" class="yyy">BBB</a><br> and <a href="ccc.html" class="zzz>

发生的事情是搜索引擎(Funduc Search & Replace,如果有帮助的话)找到<a href=第一个链接(aaa.html)的匹配类,第三个链接的匹配类(ccc.html),并包括其间的所有内容。

我必须使用什么表达式来确保只有具有正确类的文件的链接才会出现在搜索结果中?

例如,

<a href="ccc.html" class="zzz>

谢谢你的帮助。

4

2 回答 2

0

一次或多次出现的+修饰符在大多数正则表达式引擎中都渴望匹配。这意味着,[a-z]+意味着“尽可能多地匹配 a 或 b 或 ... 或 z”。

Perl 正则表达式引擎有一个特殊+?的惰性匹配修饰符,因此[a-z]+?意味着“尽可能少匹配 a..z”。

简单地说,您可以从“任何字符”中排除",>以匹配:

[^">]+

正则表达式将如下所示:

<a href="([^">]+.html)" class="zzz">

更精确的 perl 版本:

<a\s+.*?\bhref\s*=\s*"(.+?\.html)"\s*class\s*=\s*"zzz".*?>

这里()是捕获组。

我没有尝试过Funduc Search and Replace for Windows,希望它有效。

于 2012-08-14T08:52:55.270 回答
0

使用 DOM 库(最好是支持 XPath 的库)而不是正则表达式。正则表达式不太适合处理 HTML。

于 2012-08-14T08:45:24.277 回答