如何防止链接搜索溢出标记?
我有一个本地网站,其网页包含各种类的超链接,并想知道如何防止搜索结果溢出多个标记。 (我需要对特定链接类型的地址进行批量修改。)
例如,我的页面可能包含链接列表,例如
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&amp; Replace,如果这有帮助)找到第一个链接的<a href=
(aaa.html),第三个链接的匹配类(ccc.html) ),包括介于两者之间的一切。
我必须使用什么表达式来确保搜索结果中只显示文件与正确类的链接,而不显示任何其他内容?
如,
<a href="ccc.html" class="zzz>
感谢您的帮助。
答案 0 :(得分:0)
使用DOM库(最好是支持XPath的库)而不是正则表达式。正则表达式不适合处理HTML。
答案 1 :(得分: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
,希望它有效。