我有一个由一系列行组成的文档。在每行的中间有yy.mm.dd
形式的时间戳,例如15.12.05
。
在Notepad ++中使用PCRE(Perl兼容的正则表达式),我该如何做?
yy.mm.dd
更改为mmm dd, yyyy
,例如Dec 05, 2015
。答案 0 :(得分:1)
这个问题有三个部分。
yy.mm.dd
的时间戳。此正则表达式可以匹配时间戳格式yy.mm.dd
:
\d{2}\.\d{2}\.\d{2}
如果可以假设每个时间戳都继续进行,然后是非单词,那么这个正则表达式会更好:
\b\d{2}\.\d{2}\.\d{2}\b
为了使用find / replace将时间戳移动到行尾,您需要在单独的组中匹配时间戳和行的其余内容。 (以下假设每行只有一个时间戳)
Find: ^(?<begin>.*?)(?<timestamp>\b\d{2}\.\d{2}\.\d{2}\b)(?<end>[^$]*)$
Replace: \k<begin>\k<end> \k<timestamp>
在提取和移动时,您应该在单独的操作中格式化时间戳。这是因为您需要执行12次单独的查找/替换操作才能正确转换时间戳格式,每月一次。
Find: (?<year>\d{2})\.01\.(?<day>\d{2})$
Replace: Jan \k<day>, 20\k<year>
Find: (?<year>\d{2})\.02\.(?<day>\d{2})$
Replace: Feb \k<day>, 20\k<year>
...
Find: (?<year>\d{2})\.12\.(?<day>\d{2})$
Replace: Dec \k<day>, 20\k<year>
请注意,这假设每年都是> = 2000。