2016-12-29 90 views
-4

我有一个由一系列行组成的文档。在每行的中间有yy.mm.dd的时间戳,例如15.12.05更改并在记事本中移动时间戳++

在Notepad ++中使用PCRE(Perl兼容的正则表达式),我该怎么做?

  1. 将每个时间戳从其行的中间移到其行的末尾。
  2. 将每个时间戳的格式从yy.mm.dd更改为mmm dd, yyyy,例如, Dec 05, 2015
+0

好了,你有没有尝试过的东西没有?你有什么问题促使你问这里? – 4castle

+0

我没有试过任何成功的任务。我所有的尝试失败了。我搜索了一些其他主题。但所有的答案都没有做我所需要的。 –

+0

你使用什么语言/工具? – Travis

回答

1

这个问题有三个部分。

  1. 如何从每行中提取格式为yy.mm.dd的时间戳。
  2. 如何将所述时间戳移动到行尾。
  3. 如何更改时间戳的格式。

1.提取时间戳

的时间戳格式yy.mm.dd可以通过此正则表达式匹配:

\d{2}\.\d{2}\.\d{2} 

如果可以假定每一个时间戳由非词被起诉和紧随其后,然后此正则表达式会更好:

\b\d{2}\.\d{2}\.\d{2}\b 

2.移动时间戳

为了使用查找/替换将时间戳移动到行的末尾,您需要在单独的组中匹配行的时间戳和其余内容。 (以下假设是每行只有一个时间戳)

Find:  ^(?<begin>.*?)(?<timestamp>\b\d{2}\.\d{2}\.\d{2}\b)(?<end>[^$]*)$ 
Replace: \k<begin>\k<end> \k<timestamp> 

3.格式化时间戳

你应该格式化时间戳在一个单独的操作你解压后移动它们。这是因为您需要执行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

相关问题