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

时间:2015-06-24 09:58:25

标签: regex notepad++ duplicate-removal

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

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

问题是:

  1. 仅适用于单字行,如果行中有空格则无法工作。
  2. 仅适用于连续重复的行。
  3. 是否有解决方案(最好是正则表达式或宏)来删除包含空格的文本中的重复行,并且这些行是不连续的?

1 个答案:

答案 0 :(得分:1)

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

  

删除包含空格且非连续

的文本中的重复行

我假设你有文字,比如说重复的行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$)

替换为空字符串。

正则表达式注意:默认情况下,^$被视为行开始/结束锚点,因此我们只匹配一行并使用^(.+)$捕获它。然后我们将换行符号(任何操作系统样式)与\r?\n匹配。前瞻(?=...)检查我们的检查线是否有任何文本([\s\S]*?)与相同的内容(^\1$ \1后面是public final class RequestWrapper extends HttpServletRequestWrapper 的反向引用捕获的行文本。)

enter image description here