2017-05-20 129 views
-2

我需要更改文件中幾個日期的格式。 該文件包含一千行。通過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中執行此操作而不是編寫腳本語言 –

回答

1

你可以用字典技巧來實現這一點。(見下文)

我們將使用下面的正則表達式:

(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