我有这一行,它有时会在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++进行搜索和替换。
发布于 2012-10-18 21:04:38
如果您使用的是EditPad Pro (或EditPad Lite,它是免费的),这将很容易:
搜索
(?s)(?<=<script src="/resources/common\.js" type="text/javascript"></script>.*)<script src="/resources/common\.js" type="text/javascript"></script>然后全部替换为空。
一张截图来澄清:

对于其他编辑器,您必须重复应用以下正则表达式(每次复制一次):
(?s)(?<=<script src="/resources/common\.js" type="text/javascript"></script>)(.*?)<script src="/resources/common\.js" type="text/javascript"></script>但这一次用\1替换匹配。
发布于 2012-10-18 20:55:25
你可以考虑使用正向回溯,它用于查找和非匹配,你可以使用它来查找你的行的第一个匹配项,然后匹配其余的匹配项。
试试这个吧。它将匹配除第一行之外出现的所有行。
(?<=<script src=./resources/common.js..+?</script>.*?)(<script src=./resources/common.js..+?</script>)
注释:正向外观可能会工作,也可能不会工作,这取决于您使用的正则表达式引擎,但它应该在大多数情况下都能工作。*
更多信息:Regular Expression Lookaround
https://stackoverflow.com/questions/12954792
复制相似问题