Regex 使用重新编码的数据进行替换

Regex 使用重新编码的数据进行替换,regex,notepad++,Regex,Notepad++,我的记事本中有一列日期++: 2017-06-12 2017-06-13 2017-06-14 2017-06-15 2017-06-16 2017-06-17 2017-06-18 2017-06-19 2017-06-20 2017-06-20 2017-06-21 2017-06-22 2017-06-23 2017-06-24 2017-06-25 2017-06-26 2017-06-27 2017-06-28 2017-06-29 2017-06-30 2017-07-01 2017

我的记事本中有一列日期++:

2017-06-12
2017-06-13
2017-06-14
2017-06-15
2017-06-16
2017-06-17
2017-06-18
2017-06-19
2017-06-20
2017-06-20
2017-06-21
2017-06-22
2017-06-23
2017-06-24
2017-06-25
2017-06-26
2017-06-27
2017-06-28
2017-06-29
2017-06-30
2017-07-01
2017-07-02
2017-07-03
2017-07-04
2017-07-05
2017-07-06
2017-07-07
2017-07-08
2017-07-09
2017-07-10
我需要它通过在每周之后放置
\r\n
来减少周数,如:

2017-06-12
2017-06-13
2017-06-14
2017-06-15
2017-06-16
2017-06-17
2017-06-18

2017-06-19
2017-06-20
2017-06-20
2017-06-21
2017-06-22
2017-06-23
2017-06-24
2017-06-25

2017-06-26
2017-06-27
2017-06-28
2017-06-29
2017-06-30
2017-07-01
2017-07-02

2017-07-03
2017-07-04
2017-07-05
2017-07-06
2017-07-07
2017-07-08
2017-07-09

2017-07-10
我确实使用正则表达式来替换。我发现7天:

\d\d\d\d-\d\d-\d\d\r\n\d\d\d\d-\d\d-\d\d\r\n\d\d\d\d-\d\d-\d\d\r\n\d\d\d\d-\d\d-\d\d\r\n\d\d\d\d-\d\d-\d\d\r\n\d\d\d\d-\d\d-\d\d\r\n\d\d\d\d-\d\d-\d\d\r\n
现在我想添加
\r\n


但是如何使用选定的数据替换为自身加上
\r\n

如果您确定第一个日期是星期一,您可以:

  • Ctrl+H
  • 查找内容:
    (?:\d{4}-\d\d-\d\d\R){7}
  • 替换为:
    $0\r\n
  • 全部替换

    • 在您的示例输入中,有一些行加倍。e、 g.
      2017-06-20
      。在您的示例输出中,这一行也是双倍的,周块由八行组成2017-06-20的七条独特的行和一条加倍的行。我假设输入中的所有行都已排序,因此非唯一行彼此后面。此外,我假设第一行标记一周的第一天

      正则表达式是否按如下方式查找/替换:

      • 打开“替换”对话框
      • 查找内容:
        ((.*\R)\3*){7}
      • 替换为:
        \1\r\n
      • 检查正则表达式,不检查。匹配换行符
      • 单击“替换”或“全部替换”
      解释

      让我们从第三个内部组开始,从内到外解释
      ((.*\R)\3*){7}
      :在下面的
      x中,y
      是正则表达式部分,而不是字面字符

      • (.*\R)
        第三组从开始到结束只有一行
      • (y\3*)
        我们寻找一个
        y
        ,后面是在第三个大括号组中捕获的可选部分,这里它意味着一个
        y
        ,后面是可选的
        y
        ,这里
        y
        \3
        引用的第三个组;本文件涉及2017-06-20年<代码>案例
      • (x{7}
        我们匹配了七个重复的
        x
        ,这意味着这里有七个唯一的行,它们可以在块中重复,所以8行加一行就可以了

      你怎么知道某个日期是星期天?完整的解决方案似乎有两个步骤:删除重复的行,然后在每个第7个日期后添加换行符。这很好,但我省略了?:因为我不知道这意味着什么。什么?:用于?@vico它处理
      2017-06-20
      行是否正确?@vico:
      (?:)
      被称为非捕获组,它比捕获组更有效。这种方法很好,但由于未知原因,我在第一组中有8项,而其他7项。它更正了2017-06-20,但留下了2017-11-05。为什么?替换部分中的\1是什么意思?在
      \1
      中重新捕获与第一个
      (…)
      匹配的内容。这是整段文字。有关更多信息,请参阅: