Regex-删除模式之间的行,只保留第一次出现

Regex-删除模式之间的行,只保留第一次出现,regex,lines,Regex,Lines,我需要一个正则表达式,它删除给定模式的两行之间的行,只保留下一行的第一个匹配项。有点像uniq 输入: Pattern.SomeText RepeatedLine RepeatedLine RepeatedLine Line Pattern.OtherText RepeatedLine Pattern.ThirdText RepeatedLine TTTTRepeatedLine 输出: Pattern.SomeText RepeatedLine Line Pattern.OtherTe

我需要一个正则表达式,它删除给定模式的两行之间的行,只保留下一行的第一个匹配项。有点像uniq

输入:

Pattern.SomeText
RepeatedLine
RepeatedLine
RepeatedLine
Line

Pattern.OtherText
RepeatedLine

Pattern.ThirdText
RepeatedLine
TTTTRepeatedLine
输出:

Pattern.SomeText
RepeatedLine
Line

Pattern.OtherText 
RepeatedLine

Pattern.Third
TextRepeatedLine
TTTT

有图案的线条总是以它开头,而完整的线条是唯一的。我想用记事本++。

下面是一个正则表达式示例,它可以找到连续的重复行:

const regex=/\n(+)\n\1\n/g;
const str=`Pattern.SomeText
重复线路
重复线路
重复线路
线
Pattern.OtherText
重复线路
Pattern.ThirdText
重复线路
TTTT
重复线`;
常量subst=`\n`;
//被替换的值将包含在结果变量中
const result=str.replace(regex,subst);

log('替换结果:\n',结果)正则表达式不删除文本。您可以将regex与搜索和替换工具/脚本语言(如awk、bash或sed)一起使用。更好的谷歌搜索技巧也会产生更快的结果。你想删除任意两行之间的重复行,或者如果这两行与它们包装的那一行相同?在您的示例中,您删除了包装线,而不是末尾的
TTTT
。中间的那一行必须重复吗,还是仅仅是那些换行的?我有点被迫使用正则表达式。也许一些正则表达式可以匹配重复的行,我可以用emtpy char替换它。我需要能够找到在匹配模式的两行之间重复的行。所以我可以用模式来标记线条,然后正则表达式匹配重复模式的两个眼点之间的线条。然后我用emtpy替换它们,这样它们就消失了。那么,两条周围的线应该匹配哪种模式呢?他们是一样的吗?中间的线是否不必与周围的两条线匹配?如果没有,它是否仍然必须重复-就像它在文件中的任何位置的其他地方出现一样?