使用正则表达式在记事本++中查找和替换更改日期格式

Find and replace changing date format in notepad++ using regular expressions

我需要更改 SQL 文件中许多值的日期格式。

有些日期值采用 'DD-MON-RR' 格式,但我需要它们采用 'YYYY-MM-DD' 格式。

在文件中我有 21 世纪和 20 世纪的日期:

to_date('01-Nov-20','DD-MON-RR'),to_date('28-Dec-99','DD-MON-RR')

我正在寻找一个正则表达式来查找和替换这些值。

这是我的第一次尝试,即使是20世纪的作品:

FIND: 
(\d{2})-(\w{3})-(([0-4])\d|[5-9]\d)

REPLACE: 
(?{4}20:19)--

这有助于重新排列元素的位置,但我必须用相关数字替换所有月份。

现在我正在寻找可以在同一个正则表达式中查找和替换月份名称的东西:

FIND: 
(\d{2})-((Jan)|(Feb)|(Mar)|(Apr)|(May)|(Jun)|(Jul)|(Aug)|(Sep)|(Oct)|(Nov)|(Dec))-(([0-4])\d|[5-9]\d)

现在我在尝试编写替换表达式时遇到问题,有人可以帮助我吗?

谢谢

您可以定义尽可能多的月份(月份缩写)而不是 (\w{3}),并在条件替换模式中使用更多条件。

您可以使用

查找内容(\d{2})-(?:(Jan)|(Feb)|(Mar)|(Apr)|(May)|(Jun)|(Jul)|(Aug)|(Sep)|(Oct)|(Nov)|(Dec))-(([0-4])\d|[5-9]\d)
替换为(?{15}20:19)-(?{13}12:?{12}11:?{11}10:?{10}09:?{9}08:?{8}07:?{7}06:?{6}05:?{5}04:?{4}03:?{3}02:?{2}01)-

查看演示截图:

因此,(\w{3}) 被替换为 (?:(Jan)|(Feb)|(Mar)|(Apr)|(May)|(Jun)|(Jul)|(Aug)|(Sep)|(Oct)|(Nov)|(Dec)),一个具有 12 个捕获组的非捕获组。您可以对其进行编辑,例如,使其也支持 Sept,在 Sep 之后添加 t?,或者在 Jun 之后添加 e? 以同时支持 June .

替换模式已调整以说明新引入的 12 个捕获组。