删除所有代码<a> with Notepad + +</a>

时间:2013-09-29 12:39:56

标签: regex notepad++

我想从所有链接(<a href=""></a>)的文本中删除,但标记属性为href="site.com"的人除外(例如)。

<a href="site.com">text</a>
<a href="google.com">text</a>
<a href="yandex.com">text</a>

那就是剩下的最后两个链接。你可以告诉它正确的正则表达式(在记事本+ +中)。

3 个答案:

答案 0 :(得分:3)

首先,.*应该是懒惰的,否则,您将匹配超过必要的。

<a href=".*?">.*?</a>

接下来,您可以使用否定前瞻来阻止来自<a href="site.com">text</a>的匹配,您可以这样做:

<a href="(?!site.com">).*?">.*?</a>

如果您替换为空,结果将只剩下<a href="site.com">text</a>

如果要保留文本,请将文本括在括号中并在替换中调用它:

<a href="(?!site.com">).*?">(.*?)</a>

并替换为$1

请务必选择“正则表达式”。如果您的链接跨越多行,请选中复选框“。匹配换行符”。

enter image description here

答案 1 :(得分:0)

一个非常简单和通用的解决方案可能是:

Find: <a(.*?)>(.*)</a>
Replace: $2

$ 2将留下HyperLink的文本。

答案 2 :(得分:0)

如果我想删除所有超链接但保留文本,这些似乎都不起作用。该示例甚至根本找不到任何链接。

 <a(.*?)>(.*)</a>

以下正确查找链接

<a .*?.*?</a>

但如果我使用$ 1或$ 2,它只会删除链接&amp;锚文本

我想保留文字

我的解决方案:

<a .*?.*?>

这将删除链接的开头标记,留下文字&amp;剩余标记 - 然后您只需删除</a>

即可