正则表达式查找/删除重复行

时间:2012-10-18 12:34:09

标签: regex replace

我有这一行,有时在html文件中重复,我想:

1-获取正则表达式,只查找具有该行重复的文件

2-获取正则表达式进行搜索并删除文件中的第二个实例,并保留第一个实例。所以它只保留第一个,而不是第二个

鉴于这些行不是彼此相继的,它们被大量的代码和文本分开。

该行是:

<script src="/resources/common.js" type="text/javascript"></script>

或者它可能在需要删除的行之前或之后有单词,例如:

<script src="/resources/common.js" type="text/javascript"></script><div id=something"...

我使用Notepad ++进行搜索和替换。

2 个答案:

答案 0 :(得分:2)

如果您使用EditPad Pro(或EditPad Lite,这是免费的),那将很容易:

搜索

(?s)(?<=<script src="/resources/common\.js" type="text/javascript"></script>.*)<script src="/resources/common\.js" type="text/javascript"></script>

并全部取而代之。

屏幕截图澄清:

EPP screenshot

对于其他编辑者,您将不得不重复应用以下正则表达式(每次复制一次):

(?s)(?<=<script src="/resources/common\.js" type="text/javascript"></script>)(.*?)<script src="/resources/common\.js" type="text/javascript"></script>

但这次将匹配替换为\1

答案 1 :(得分:0)

您可以考虑使用用于查找和匹配的正向lookbehind,您可以使用它来查找第一次出现的行,然后匹配剩余的出现次数。

试试这个。它将匹配除第一个行之外的所有行。

(?<=<script src=./resources/common.js..+?</script>.*?)(<script src=./resources/common.js..+?</script>)

注意 :根据您使用的正则表达式引擎,正面观察可能会或可能不会起作用,但在大多数情况下它应该有效。*

<小时/> 更多信息: Regular Expression Lookaround