使用recoginsed数据进行替换

时间:2017-05-28 12:03:18

标签: regex notepad++

我在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-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

我使用RegEx替换。我找了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

2 个答案:

答案 0 :(得分:0)

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

  • 控制 + ħ
  • 找到:(?:\d{4}-\d\d-\d\d\R){7}
  • 替换为:$0\r\n
  • 全部替换

答案 1 :(得分:0)

在您的示例输入中,有一些行加倍。例如2017-06-20。在您的示例输出中,此行也加倍,周块八行组成。 2017-06-20的七个唯一行和一个加倍行。我假设输入中的所有行都已排序,因此非唯一行相互排在后面。另外我假设第一行标志着一周的第一天。

正则表达式查找/替换如下:

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

<强>解释

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

  • (.*\R)第三组从开始到结束只是一行
  • (y\3*)我们会查找y后跟第三个大括号组中捕获的可选部分,此处表示y后跟可选的y重复次数1}},此处y\3引用的第三个组;这涉及2017-06-20案例
  • (x{7})我们匹配了x的七次重复,这意味着七个唯一的行可以在块中重复,所以8行一行加倍就可以了