如何使用RegEx删除文本中的非连续行?

问题描述 投票:0回答:1

我在Notepad ++中使用以下表达式来删除重复的行:

^(.*)(\r?\n\1)+$ 

问题是:

  1. 它仅适用于单个字线,如果一行中有空格则不起作用。
  2. 它仅适用于连续的重复行。

是否有解决方案(最好是正则表达式或宏)来删除包含空格的文本中的重复行,并且这些行是非连续的?

regex notepad++ duplicate-removal
1个回答
2
投票

由于没有人感兴趣,我会发布我认为你需要的东西。

删除包含空格的文本中的重复行,这些行是非连续的

我假设你有文字,说重复行My Line One and some textMy Line Two and more text

My Line One and some text
My Line One and some text
My Line Two and more text
My Line One and some text
My Line Two and more text

这些重复的行不是全部连续的(只有前两个)。

因此,您可以通过运行此搜索删除重复行并替换:

^(.+)\r?\n(?=[\s\S]*?^\1$)

替换为空字符串。

正则表达式注意:默认情况下,^$被视为行开始/结束锚点,所以我们只匹配一行并用^(.+)$捕获它。然后我们将换行符号(任何OS样式)与\r?\n匹配。前瞻性的(?=...)检查我们的线路在检查之后是否有任何文本(使用[\s\S]*?)具有相同的内容(使用^\1$,其中\1是对捕获的线文本的反向引用)。

© www.soinside.com 2019 - 2024. All rights reserved.