我需要更改SQL文件中许多值的日期格式。
有日期值,是在‘DD-MON’格式,但我需要他们是'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)\3-\2-\1这一项有助于重新排序元素的位置,但我必须用相关的数字替换所有月份。
现在,我正在搜索在同一个正则表达式中查找和替换月份名称的内容:
FIND:
(\d{2})-((Jan)|(Feb)|(Mar)|(Apr)|(May)|(Jun)|(Jul)|(Aug)|(Sep)|(Oct)|(Nov)|(Dec))-(([0-4])\d|[5-9]\d)现在我很难写出替换表达式,有人能帮我吗?
谢谢
发布于 2021-11-03 18:00:48
您可以定义多个月(月缩写)而不是(\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)$14-(?{13}12:?{12}11:?{11}10:?{10}09:?{9}08:?{8}07:?{7}06:?{6}05:?{5}04:?{4}03:?{3}02:?{2}01)-$1
请参阅演示屏幕截图:

因此,(\w{3})被(?:(Jan)|(Feb)|(Mar)|(Apr)|(May)|(Jun)|(Jul)|(Aug)|(Sep)|(Oct)|(Nov)|(Dec))取代,这是一个包含12个捕获组的非捕获组.您可以编辑它,例如,也支持Sept,在Sep之后添加t?,或者在Jun之后添加e?,以也支持June。
对替换模式进行调整,以考虑新引入的12个捕获组。
https://stackoverflow.com/questions/69829470
复制相似问题