通过NotePad ++更改日期格式

问题描述:

我需要更改文件中几个日期的格式。 该文件包含一千行。通过NotePad ++更改日期格式

我不知道是否可以使用正则表达式将Apr 07, 2016这样的日期转换为2016-04-07(ISO 8601国际标准)?

下面是一些例子

Apr 07, 2016 =>2016-04-07
Jun 11, 2004 =>2004-06-11
Mar 31, 1975 =>1975-03-31

我想用记事本++文本编辑器来做到这一点。

+0

这不是Npp/regex的工作,你最好用你最喜欢的脚本语言编写脚本。 – Toto

+0

@Toto非常棘手,但可以使用字典技巧实现。 –

+0

您可以轻松地在Excel中执行此操作而不是编写脚本语言 –

你可以用字典技巧来实现这一点。(见下文)

我们将使用下面的正则表达式:

(Jan|Fev|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)(?=[\s\S]*Dictionary.*:\1=(\d+))\s(\d{2}),\s(\d{4})

Demo

使用记事本++或崇高文本

首先,打开您的文件文本编辑器并将其粘贴到我们文件的底部:

Dictionary:Jan=01:Fev=02:Mar=03:Apr=04:May=05:Jun=06:Jul=07:Aug=08:Sep=09:Oct=10:Nov=11:Dec=12

然后,打开查找/替换菜单(或使用CTRL + H)及用途:

查找内容:我们的正则表达式

替换为:\4-\2-\3

搜索模式:正则表达式

现在点击全部替换

演示

Notepad++

Sublime Text

说明

0123在第一组

(?=...)其次

[\s\S]*Dictionary.*任何字符,直到Dictionary

(Jan|Fev|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)捕获MONTH(这就是为什么字典必须在该文件的末尾是过去)

:\1=(\d+)Dictionary后,比赛第捕获值,然后是=,然后在第二组中捕获一些数字,这是月份替换

现在我们可以继续定义日期模式。

\s(\d{2})月之后是一个空白和2个其以第三组捕获数字,这是一天

\s(\d{2}),\s(\d{4})日之后是逗号,空格和4位,其在所捕获的第4组,这是今年以来

现在我们所有的群体都可以,我们可以建立替代模式:

\4-\2-\3 YEAR -REPLACEMENT_MONTH -DAY