日期格式转换的正则表达式实现

本文详细介绍了如何使用Python的正则表达式和字符串替换方法来将日期格式从中文格式转换为国际通用的YYYY-MM-DD格式,并通过代码示例进行了详细演示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原始文本:
    2011年7月18日:功能开发完毕;
    2011年7月19日:电子流程;
目标格式文本:
    2011-7-18:功能开发完毕;
    2011-7-19:电子流程;
  • VIM实现
:%s/\(\d\{4}\).\(\d\{1,2}\).\(\d\{1,2}\)./\1-\2-\3/g
说明:采用:%s/old/new/g命令进行替换,其中%表示对所有行进行替换操作,最后的g参数表明对一行中所有的new均替换为old。\d代表任意数字,old pattern中每个括号(即\(...\))中的内容构成一个group member,new pattern中对group member的引用用\1、\2、\3...代表。
  • Groovy实现
oriStr = '''2011年7月18日:功能开发完毕;
2011年7月19日:电子流程;''';
pattern = /(\d{4})\W(\d{1,2})\W(\d{1,2})\W/;
matcher = oriStr =~ pattern;
matcher.each {all,y,m,d->
println 'Patten is: '+all;
println 'Replaced by: '+y+'-'+m+'-'+d;
};
println '*****';
println oriStr.replaceAll (pattern) {all,y,m,d->y+'-'+m+'-'+d;};
运行结果:
Patten is: 2011年7月18日
Replaced by: 2011-7-18
Patten is: 2011年7月19日
Replaced by: 2011-7-19
*****
2011-7-18:功能开发完毕;
2011-7-19:电子流程;
说明:跨行字符串用三引号括起来;匹配模式用“/.../”括起来;用模式匹配字符串时,每一次成功匹配构成了matcher的一个元素(代码中用matcher.each得到),如果模式当中包含group(可以matcher.hasGroup()判断),则这个元素本身也是一个List,其中第一个元素是符合模式的substring(代码中的all),各个group member可以用下标引用,也可以分别起名字(代码中分别为y、m、d)。Groovy的String.replaceAll方法包括两个参数,第一个是要被代替的pattern,第二个是用来代替pattern的closure,该closure的返回结果是最后一行代码的值。
例如:println oriStr.replaceAll (pattern) {all,y,m,d->y+'-'+m+'-'+d;return 'Date'};的输出是:
Date:功能开发完毕;
Date:电子流程;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值