我想从所有链接(<a href=""></a>
)的文本中删除,但标记属性为href="site.com"
的人除外(例如)。
<a href="site.com">text</a>
<a href="google.com">text</a>
<a href="yandex.com">text</a>
那就是剩下的最后两个链接。你可以告诉它正确的正则表达式(在记事本+ +中)。
答案 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
。
请务必选择“正则表达式”。如果您的链接跨越多行,请选中复选框“。匹配换行符”。
答案 1 :(得分:0)
一个非常简单和通用的解决方案可能是:
Find: <a(.*?)>(.*)</a>
Replace: $2
$ 2将留下HyperLink的文本。
答案 2 :(得分:0)
如果我想删除所有超链接但保留文本,这些似乎都不起作用。该示例甚至根本找不到任何链接。
<a(.*?)>(.*)</a>
以下正确查找链接
<a .*?.*?</a>
但如果我使用$ 1或$ 2,它只会删除链接&amp;锚文本
我想保留文字
我的解决方案:
<a .*?.*?>
这将删除链接的开头标记,留下文字&amp;剩余标记 - 然后您只需删除</a>