在notepad ++中查找并替换重新排序的日期格式

时间:2010-12-02 02:28:36

标签: regex date notepad++ replace

我有一个有几千行的文件要添加到MySQL数据库中。行中的日期值采用dd-mm-yyyy格式,但我需要它们采用yyyy-mm-dd格式。

例如,'11-04-2010',需要在每一行中成为'2010-04-11',

在notepad ++或其他文本编辑器中有一种简单的方法吗?

4 个答案:

答案 0 :(得分:34)

您可以使用Textpad执行此操作:

查找: ([0-9]+)-+([0-9]+)-+([0-9]+)

替换:\ 3- \ 2- \ 1

答案 1 :(得分:8)

为了确保您只重新排序错误的格式(如果您使用合并数据库的混合格式),请使用:

([0-9]{2})-+([0-9]{2})-+([0-9]{4})

搜索(四位数字,短划线,两位数字,短划线,两位数字)。

在像notepad ++这样的正则表达式编辑器中,将其替换为:

\3-\2-\1

在像libre office这样的工具中,您需要将其替换为:

$3-$2-$1 

编辑:我写了一篇关于此的博文,因为它似乎是一个常见的问题: http://bytethinker.com/blog/correct-date-format-with-notepad-and-regex

答案 2 :(得分:2)

使用Notepad ++将mm / dd / yyyy更改为文本文件的多行中的yyyy / mm / dd。脚本被保存为下一个文件的宏。

查找:([0-9] {2})/ +([0-9] {2})/ +([0-9] {4}) 替换:\ 3 / \ 1 / \ 2

答案 3 :(得分:0)

另一个适用于ISO date format值的健壮模式,例如“ 2010-11-30T00:00:00.266Z”

捕获ISO日期表示形式的各个元素的组

  

“(\ d {4})-(\ d {1,2})-(\ d {1,2})T([0-2] \ d):([0-5] \ d ):([0-5] \ d)(?:。\ d +)?Z?\ s?“

以这种方式总共捕获了六个组,最后包含“?:”的第七个组是不捕获的,这意味着它不保留该组​​记录的任何值,只是忽略它们。

我们捕获的六个组的数字基于位置,例如\ 1 \ 2 \ 3 ...直至\ 6。

将日期更改为数据库支持的日期格式的替换模式,该日期格式主要用于Oracle值,例如-“ 2010年11月30日00:00:00 AM”

  

“ \ 2 / \ 3 / \ 1 \ 4:\ 5:\ 6AM”

它与Notepad ++一起使用时效果很好 祝你好运!