在记事本++中查找并替换为重新排序的日期格式

Posted

技术标签:

【中文标题】在记事本++中查找并替换为重新排序的日期格式【英文标题】:Find and replace with reordered date format in notepad++ 【发布时间】:2011-05-18 21:13:32 【问题描述】:

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

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

在 notepad++ 或其他文本编辑器中是否有简单的方法来执行此操作?

【问题讨论】:

【参考方案1】:

你可以用 Textpad 做到这一点:

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

替换:\3-\2-\1

【讨论】:

我认为您可以使用([0-9]4)-+([0-9]2)-+([0-9]2) 更具体。 \3-\2-\1 对我来说是全新的并且很有帮助。为此 +1。 javascript 有类似的东西吗?【参考方案2】:

为确保只重新排序错误的格式(以防合并数据库中的格式混合),请使用以下命令:

([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

【讨论】:

【参考方案3】:

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

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

【讨论】:

【参考方案4】:

另一种适用于 ISO date format 值的稳健模式,例如 "2010-11-30T00:00:00.266Z "

捕获 ISO 日期表示的各种元素的组

"(\d4)-(\d1,2)-(\d1,2)T([0-2]\d):([0-5]\d ):([0-5]\d)(?:.\d+)?Z?\s?"

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

我们捕获的六个组具有基于位置的编号,例如 \1 \2 \3... 直到 \6。

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

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

它适用于记事本++ 祝你好运!

【讨论】:

以上是关于在记事本++中查找并替换为重新排序的日期格式的主要内容,如果未能解决你的问题,请参考以下文章

在Excel中,如何将数字转化成日期?

如何使用 VBA 在 Excel 注释中查找和替换日期格式

如何替换EXCEL中日期的格式

如何替换EXCEL中日期的格式

在表格视图中重新排序按日期排序的单元格项目

excel改的日期格式为啥要双击一下单元格才能变