获取所有 <a> 个不包含 rel="nofollow" 的标签

Get all <a> tags which do not contain a rel="nofollow"

我写了一个小命令来查找所有包含外部 url 的文件,使用 ack 并在 sublime 中打开它们,所以我可以在所有标签上进行查找和替换并添加 rel="nofollow":

sublime $(ack -l '<a[^>]+href="http')

但现在我想确保那些 <a> 标签尚未包含 rel="nofollow"。谁能帮帮我?

我只需要获取所有包含 href="http<a> 标签(所以我很确定它是外部 url),但如果我能检查一下可能会更好它包含 href="<do not contain website.nl>",所以没有 website.nl 的 href。它可能不包含 rel="nofollow".

如果它可以检查 rel="nofollow"rel='nofollow'(所以单引号和双引号,href 也一样),那将是一个很好的奖励,但我可以 运行相同的命令几次,有和没有双引号,所以这不是什么大问题。

我相信 ack 使用 Perl 正则表达式模式,在这种情况下你应该使用否定的前瞻性,就像这样

$ sublime $(ack -l '<a\b(?=[^>]+\bhref="http)(?![^>]+\brel="nofollow")')

但请注意,ack 一次只会检查一行,而 HTML <a> 元素可能 运行 多行