使用 Notepad++ Regex 删除锚点

使用 Notepad++ Regex 删除锚点

我尝试过寻找其他答案,但当我尝试阅读有关 Regex 的任何内容时,我的大脑就会爆炸,无论我读了多少次或读得多慢,我都无法理解它。

我尝试使用 Notepad++ 从文件中删除它:

<a style="text-decoration:none" href="/SOME RANDOM WORD">.</a>

但我不确定在 Notepad++ 中我需要使用什么正则表达式搜索字符串来执行此操作。SOME RANDOM WORD 可以是任何长度的任何内容,但其所在标签/页面的开始和结束是相同的。

我只想删除任何实例

<a style="text-decoration:none" href="/SOME RANDOM WORD">.</a>

并将其替换为空。

答案1

在“查找内容”行中输入以下内容:

<a style="text-decoration:none" href=".+">\.</a>

替换为:留空。

然后点击全部替换。

这里的关键是使用.+这意味着,找到一个或多个字符。这基本上意味着,任何具有相同文本但包含任何 URL 的 URL 都将被找到并替换。用空字符替换。可以过滤掉 URL 或其他内容,但鉴于您的帖子指定要用空字符替换整个字符串,因此未提供此信息以免让您进一步困惑。

确保在底部选择“正则表达式”,但我认为您已经想到了这一点。

此外,您还必须转义特殊字符,例如 。如果您的链接包含实际文本而不是 .,您也必须将其替换\..+

答案2

我提交了另一个答案,并不是因为我想破坏已经接受的非常好的答案,而是因为您的搜索表达几乎正确。

令人困惑的是,在文件中,掩码*表示任意长度的任意字符串(包括零),而在正则表达式中,它表示前一个模式的任意出现次数。因此,您要求的是一个在子句中的引号之间包含任意数量的斜杠(仅)的字符串href=

您所需要的是在搜索表达式中,这使用了文件掩码(其中匹配任何单个字符)和正则表达式(其中使用)href="/.*"之间的另一个很大的区别,给出任意数量的任意字符。?..*

的不同用法.意味着>.</a>在搜索表达式的末尾,>和之间的任何字符</a>都将匹配:要仅匹配文字,.您需要告诉搜索表达式您想要将其与文字匹配.,您可以通过在前面加上.所谓的逃脱字符\。因此\.匹配一个文字.并且\*匹配一个文字*

如果正则表达式使用与文件掩码相同的匹配项,您的搜索字符串将会完美地工作,但不幸的是,它们没有,而您需要的是:

<a style="text-decoration:none" href="/.*">\.</a>

如您所见,它与您尝试的没有太大区别,只有两个额外(但至关重要)的字符,但我希望我的解释可以让您有信心进一步追求它们:您一定会再次需要它们。

我不能否认它们是令人生畏的,我也不能推荐一种简单的方法,尽管你可能会发现这个测试者有用(尽管它确实将其/视为需要在转义字符前面加上转义字符的特殊字符\- 在某些情况下确实如此,但不是你的,所以如果你在搜索表达式上尝试它,请允许这样做)。

不要因为这些表达式看起来有些晦涩难懂而放弃:我已经和它们一起工作了很多年,但仍然有很多东西超出了我的理解范围,尤其是检查二进制数是否是 3 的倍数。维基百科页面- 我找到了解释,但即使我有数学学位,我也无法理解其表达的细节。

您了解文件掩码,并且通过使用正则表达式所需的简单修改,您就有一个起点。

相关内容