【问题标题】: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++ 或其他文本编辑器中是否有简单的方法来执行此操作?

【问题讨论】:

    标签: regex date notepad++ replace


    【解决方案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 日期表示的各种元素的组

        "(\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 值,例如 - “11/30/2010 00:00:00 AM”

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

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

        【讨论】:

          猜你喜欢
          • 2021-12-18
          • 2021-01-23
          • 2017-12-22
          • 2013-08-20
          • 1970-01-01
          • 1970-01-01
          • 2013-11-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多