0

我有这一行,有时在 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++ 进行搜索和替换。

4

2 回答 2

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 截图

对于其他编辑器,您必须重复应用以下正则表达式(每次重复一次):

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

但这次将匹配替换为\1.

于 2012-10-18T13:04:38.473 回答
0

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

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

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

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


更多信息: 正则表达式环视

于 2012-10-18T12:55:25.273 回答