我尝试过寻找其他答案,但当我尝试阅读有关 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 的倍数。维基百科页面- 我找到了解释,但即使我有数学学位,我也无法理解其表达的细节。
您了解文件掩码,并且通过使用正则表达式所需的简单修改,您就有一个起点。