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
引用的第三个组;本文件涉及2017-06-20年<代码>案例\3
我们匹配了七个重复的(x{7}
,这意味着这里有七个唯一的行,它们可以在块中重复,所以8行加一行就可以了x
2017-06-20
行是否正确?@vico:(?:)
被称为非捕获组,它比捕获组更有效。这种方法很好,但由于未知原因,我在第一组中有8项,而其他7项。它更正了2017-06-20,但留下了2017-11-05。为什么?替换部分中的\1是什么意思?在\1
中重新捕获与第一个(…)
匹配的内容。这是整段文字。有关更多信息,请参阅: